From 826134888e24a6fb6a8520d60be3bc4d2f8cef70 Mon Sep 17 00:00:00 2001 From: estrogen elf <87099578+BlossomiShymae@users.noreply.github.com> Date: Thu, 29 May 2025 23:07:39 -0500 Subject: [PATCH] feat: update about page --- Needlework.Net/App.axaml | 1 + Needlework.Net/Assets/Users/sylv.jpg | Bin 0 -> 17195 bytes Needlework.Net/Controls/UserCard.axaml | 71 ++++++++ Needlework.Net/Controls/UserCard.axaml.cs | 91 ++++++++++ Needlework.Net/Views/Pages/AboutView.axaml | 193 ++++----------------- 5 files changed, 200 insertions(+), 156 deletions(-) create mode 100644 Needlework.Net/Assets/Users/sylv.jpg create mode 100644 Needlework.Net/Controls/UserCard.axaml create mode 100644 Needlework.Net/Controls/UserCard.axaml.cs diff --git a/Needlework.Net/App.axaml b/Needlework.Net/App.axaml index 02d7a64..a0e5438 100644 --- a/Needlework.Net/App.axaml +++ b/Needlework.Net/App.axaml @@ -15,6 +15,7 @@ + diff --git a/Needlework.Net/Assets/Users/sylv.jpg b/Needlework.Net/Assets/Users/sylv.jpg new file mode 100644 index 0000000000000000000000000000000000000000..62a9eda00c20567ace02fea14b77611cd744fdd4 GIT binary patch literal 17195 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≠w&1GEUp9Nbu;&pm{b2p00RO1 z{>i6m*BWH+$nx0j&$^x~q|^Lsty(@Ud`G0-qjDpa zZ}#m?wX4|fFZG8TVOEc1Hmjb1ALs2@pnSLo0Cw$CMFEx7OK?v-S4BLo7uB4<+B}Z& zRyvOX>#`4uP_)iL)a@PzIs4APIR03#bg!J2F{JC>9=d>&Dr#`9PjJTsepU2uJ^r=f z=NNd=u9SM6I6Bg;7b!cirw1d0(wjyzUP^50Xb%*W + + + + Needlework.Net is the .NET rewrite of Needlework. This tool was made to help others with LCU and Game Client development. Feel free to ask any questions + or help contribute to the project! Made with love. 💜 + + + + + diff --git a/Needlework.Net/Controls/UserCard.axaml.cs b/Needlework.Net/Controls/UserCard.axaml.cs new file mode 100644 index 0000000..8f683f4 --- /dev/null +++ b/Needlework.Net/Controls/UserCard.axaml.cs @@ -0,0 +1,91 @@ +using Avalonia; +using Avalonia.Controls; +using Avalonia.Controls.Metadata; +using Avalonia.Controls.Primitives; +using Avalonia.Interactivity; +using Avalonia.Media; +using System.Diagnostics; + +namespace Needlework.Net.Controls; + +[TemplatePart("PART_GithubButton", typeof(Button))] +public partial class UserCard : ContentControl +{ + private Button? _githubButton; + + public UserCard() + { + UserImageMargin = new(0, !double.IsNaN(Height) ? 100 - Height : 0, 0, 0); + } + + public static readonly StyledProperty UserImageProperty = + AvaloniaProperty.Register(nameof(UserImage), defaultValue: null); + + public IImage? UserImage + { + get { return GetValue(UserImageProperty); } + set { SetValue(UserImageProperty, value); } + } + + public static readonly StyledProperty UserNameProperty = + AvaloniaProperty.Register(nameof(UserName), defaultValue: null); + + public string? UserName + { + get { return GetValue(UserNameProperty); } + set { SetValue(UserNameProperty, value); } + } + + public static readonly StyledProperty UserGithubProperty = + AvaloniaProperty.Register(nameof(UserGithub), defaultValue: null); + + public string? UserGithub + { + get { return GetValue(UserGithubProperty); } + set { SetValue(UserGithubProperty, value); } + } + + public static readonly DirectProperty UserImageMarginProperty = + AvaloniaProperty.RegisterDirect(nameof(UserImageMargin), o => o.UserImageMargin); + + private Thickness _userImageMargin = new(0, 0, 0, 0); + + public Thickness UserImageMargin + { + get { return _userImageMargin; } + private set { SetAndRaise(UserImageMarginProperty, ref _userImageMargin, value); } + } + + protected override void OnApplyTemplate(TemplateAppliedEventArgs e) + { + base.OnApplyTemplate(e); + + SizeChanged += UserCard_SizeChanged; + + if (_githubButton != null) + { + _githubButton.Click -= GithubButton_Click; + } + + _githubButton = e.NameScope.Find("PART_GithubButton") as Button; + + if (_githubButton != null) + { + _githubButton.Click += GithubButton_Click; + } + } + + private void UserCard_SizeChanged(object? sender, SizeChangedEventArgs e) + { + UserImageMargin = new(0, !double.IsNaN(e.NewSize.Height) ? 100 - e.NewSize.Height : 0, 0, 0); + } + + private void GithubButton_Click(object? sender, RoutedEventArgs e) + { + var process = new Process() + { + StartInfo = new ProcessStartInfo($"https://github.com/{UserGithub}") { UseShellExecute = true } + }; + process.Start(); + } +} \ No newline at end of file diff --git a/Needlework.Net/Views/Pages/AboutView.axaml b/Needlework.Net/Views/Pages/AboutView.axaml index beea255..c049c74 100644 --- a/Needlework.Net/Views/Pages/AboutView.axaml +++ b/Needlework.Net/Views/Pages/AboutView.axaml @@ -8,160 +8,41 @@ mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450" x:Class="Needlework.Net.Views.Pages.AboutView" x:DataType="vm:AboutViewModel"> - - - - - - - - - - - - - - - Blossomi Shymae - - - - - - About - - Needlework.Net is the .NET rewrite of Needlework. This tool was made to help others with LCU development. Feel free to ask any questions - or help contribute to the project! Made with love. 💜 - - - - - - - - Thanks to the friends and people who made this tool possible... - - - - - - - - - - dysolix - - - - - - - For providing and hosting an auto-generated OpenAPI document of the LCU. - - - - - - - - - - - - - Ray - - - - - - - For guidance, advice, or providing help via HextechDocs. - - - - - - - - - - - - - dubble - - - - - - - For encouraging me to publish Needlework. This project may never have seen the light of day without him. - - - - - - - - - - - - - Third Party Developer Community - - - - - - For providing numerous documentation on the LCU. - - - - - - - - + + + + + + + Needlework.Net is the .NET rewrite of Needlework. This tool was made to help others with LCU and Game Client development. Feel free to ask any questions + or help contribute to the project! Made with love. 💜 + + + For providing LCU Schema, the auto-generated OpenAPI document for the LCU. + + + For providing a fixed up-to-date Game Client schema. + + + For guidance, advice, and providing help via HextechDocs. + + + For encouraging me to publish Needlework.Net and other ideas. + + +