mirror of
https://git.huckle.dev/Huckles-Minecraft-Archive/PCK-Studio.git
synced 2026-09-28 06:10:45 +00:00
79 lines
2.2 KiB
C#
79 lines
2.2 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.ComponentModel;
|
|
using System.Diagnostics;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using Octokit;
|
|
using MetroFramework.Controls;
|
|
using System.Drawing;
|
|
using System.Net;
|
|
using System.IO;
|
|
using System.Threading.Tasks;
|
|
using PckStudio.Internal;
|
|
using System.Drawing.Imaging;
|
|
|
|
namespace PckStudio.ToolboxItems
|
|
{
|
|
public partial class GithubUserPanel : MetroUserControl
|
|
{
|
|
private Author _contributor;
|
|
|
|
public GithubUserPanel()
|
|
{
|
|
InitializeComponent();
|
|
}
|
|
|
|
public GithubUserPanel(Author contributor) : this()
|
|
{
|
|
_contributor = contributor;
|
|
}
|
|
|
|
protected override void OnLoad(EventArgs e)
|
|
{
|
|
base.OnLoad(e);
|
|
if (DesignMode)
|
|
return;
|
|
|
|
Visible = false;
|
|
Task.Run(LoadAuthor);
|
|
}
|
|
|
|
private void LoadAuthor()
|
|
{
|
|
string cacheKey = Convert.ToBase64String(Encoding.Default.GetBytes(_contributor.AvatarUrl));
|
|
|
|
if (!ApplicationScope.DataCacher.HasFileCached(cacheKey))
|
|
{
|
|
using (WebClient webClient = new WebClient())
|
|
{
|
|
Stream avatarImgStream = webClient.OpenRead(_contributor.AvatarUrl);
|
|
MemoryStream ms = new MemoryStream();
|
|
new Bitmap(avatarImgStream).Save(ms, ImageFormat.Png);
|
|
avatarImgStream.Flush();
|
|
avatarImgStream.Dispose();
|
|
ApplicationScope.DataCacher.Cache(ms.ToArray(), cacheKey);
|
|
}
|
|
}
|
|
|
|
Image avatarUserImg = Image.FromFile(ApplicationScope.DataCacher.GetCachedFilepath(cacheKey));
|
|
|
|
Action setUiElements = () =>
|
|
{
|
|
userPictureBox.Image = avatarUserImg;
|
|
userNameLabel.Text = _contributor.Login;
|
|
aboutButton.Text = "Github profile";
|
|
aboutButton.Click += (s, e) => Process.Start(_contributor.HtmlUrl);
|
|
Visible = true;
|
|
};
|
|
|
|
if (InvokeRequired)
|
|
{
|
|
Invoke(setUiElements);
|
|
return;
|
|
}
|
|
setUiElements();
|
|
}
|
|
}
|
|
}
|