using ClientsLibrary;
using CommonLibrary;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
namespace 软件系统客户端Wpf.Views.Controls
{
///
/// UserClientRenderItem.xaml 的交互逻辑
///
public partial class UserClientRenderItem : UserControl
{
#region Constructor
public UserClientRenderItem()
{
InitializeComponent();
}
#endregion
#region Public Property
///
/// 当前会话的唯一ID
///
public string UniqueId
{
get
{
return netAccount == null ? string.Empty : netAccount.UniqueId;
}
}
#endregion
#region Show Client Information
public void SetClientRender(NetAccount account)
{
if (account != null)
{
netAccount = account;
UserName.Text = string.IsNullOrEmpty(account.Alias) ? account.UserName : account.Alias;
Factory.Text = $"({account.Factory})";
Roles.Children.Clear();
if (account.Roles?.Length > 0)
{
foreach (var m in account.Roles)
{
TextBlock block = new TextBlock
{
Background = Brushes.LightSkyBlue,
Foreground = Brushes.Blue,
Margin = new Thickness(0, 0, 4, 0),
Text = m
};
Roles.Children.Add(block);
}
}
else
{
Roles.Children.Add(new TextBlock());
}
// 启动线程池去显示头像
System.Threading.ThreadPool.QueueUserWorkItem(new System.Threading.WaitCallback(ThreadPoolLoadPortrait), account);
}
}
#endregion
#region Update Portrait
public void UpdatePortrait(string userName)
{
if(netAccount?.UserName == userName)
{
System.Threading.ThreadPool.QueueUserWorkItem(new System.Threading.WaitCallback(ThreadPoolLoadPortrait), netAccount);
}
}
private void ThreadPoolLoadPortrait(object obj)
{
// 向服务器请求小头像
if (obj is NetAccount m_NetAccount)
{
System.Drawing.Bitmap bitmap = UserClient.PortraitManager.GetSmallPortraitByUserName(m_NetAccount.UserName);
Dispatcher.Invoke(new Action(() =>
{
Image1.Source = AppWpfHelper.TranslateImageToBitmapImage(bitmap);
}));
}
}
#endregion
#region Pricvate Member
private NetAccount netAccount = null;
#endregion
}
}