📄 grouptree_member.cs
字号:
namespace Imps.Client.Pc.BizControls
{
using Imps.Client.Core;
using System;
using System.Drawing;
using System.Windows.Forms;
public class grouptree_member : tree_widget.item_type
{
private int m_inner_space = 2;
private PersonalGroupMember m_member;
private static int ms_small_image_height = 0x10;
private static int ms_small_image_width = 0x10;
public grouptree_member(PersonalGroupMember member)
{
if (member == null)
{
throw new ArgumentNullException("member");
}
this.m_member = member;
}
internal override void dispose()
{
base.dispose();
this.m_member = null;
}
internal override void draw(Graphics g, Rectangle rcItem, tree_widget.item_state state)
{
if (this.m_member != null)
{
int left = rcItem.Left;
if (left == 0)
{
left = 5;
}
if (this.m_member.GroupMemeberInfo.GroupAbilityImage != null)
{
int top = rcItem.Top + ((rcItem.Height - this.m_member.GroupMemeberInfo.GroupAbilityImage.Height) / 2);
g.DrawImage(this.m_member.GroupMemeberInfo.GroupAbilityImage, Rectangle.FromLTRB(left, top, left + this.m_member.GroupMemeberInfo.GroupAbilityImage.Width, top + this.m_member.GroupMemeberInfo.GroupAbilityImage.Height));
left += this.m_member.GroupMemeberInfo.GroupAbilityImage.Width;
left += this.m_inner_space * 2;
}
int right = rcItem.Right - this.m_inner_space;
if (this.m_member.GroupMemeberInfo.GroupIdentityImage != null)
{
right -= this.m_member.GroupMemeberInfo.GroupIdentityImage.Width + (this.m_inner_space * 2);
}
using (StringFormat fmt = new StringFormat())
{
fmt.Alignment = StringAlignment.Near;
fmt.LineAlignment = StringAlignment.Center;
fmt.FormatFlags |= StringFormatFlags.NoWrap;
fmt.Trimming = StringTrimming.EllipsisCharacter;
Rectangle rc = Rectangle.FromLTRB(left, rcItem.Top + this.m_inner_space, right, rcItem.Bottom - this.m_inner_space);
Font font = base.host.Font;
if (this.IsCurrentUser)
{
font = new Font(font.FontFamily, font.Size, FontStyle.Bold);
}
this.m_member.RichDisplayName.Draw(g, font, this.ForeColor, rc, fmt, ref left);
left += this.m_inner_space * 4;
if (left < right)
{
using (Brush brush = new SolidBrush(Color.Gray))
{
Rectangle layoutRectangle = Rectangle.FromLTRB(left, rcItem.Top + this.m_inner_space, right, rcItem.Bottom - this.m_inner_space);
g.DrawString(this.m_member.GroupMemeberInfo.PresenseDescription, base.host.Font, brush, layoutRectangle, fmt);
}
}
}
if (this.m_member.GroupMemeberInfo.GroupIdentityImage != null)
{
int num4 = (rcItem.Right - this.m_inner_space) - this.m_member.GroupMemeberInfo.GroupIdentityImage.Width;
int num5 = rcItem.Top + ((rcItem.Height - this.m_member.GroupMemeberInfo.GroupIdentityImage.Height) / 2);
g.DrawImage(this.m_member.GroupMemeberInfo.GroupIdentityImage, Rectangle.FromLTRB(num4, num5, num4 + this.m_member.GroupMemeberInfo.GroupIdentityImage.Width, num5 + this.m_member.GroupMemeberInfo.GroupIdentityImage.Height));
}
}
}
internal override void on_after_edit(string strNewText, object context)
{
if (!(context is bool))
{
throw new ArgumentException("context is not bool type");
}
if (((bool) context) && (this.m_member.Uri.Raw == this.m_member.Owner.Uri.Raw))
{
this.m_member.OwnerGroup.UserInfo.GroupNickName.ProposedValue = strNewText.Trim();
this.m_member.OwnerGroup.UserInfo.CommitChanges(new AsyncBizOperation());
}
}
internal override void on_before_edit(object initParam, ref Rectangle rcEdit, ref string strInitText, ref object context, ref bool fCancel)
{
if (base.host != null)
{
base.on_before_edit(initParam, ref rcEdit, ref strInitText, ref context, ref fCancel);
if (!this.m_member.EnableEditUserSetProfile)
{
fCancel = true;
}
else
{
strInitText = this.m_member.GroupMemeberInfo.GroupNickName.Value;
context = true;
}
}
}
internal override void on_mousemove(MouseEventArgs args, Rectangle rcItem)
{
base.on_mousemove(args, rcItem);
base.host.Cursor = base.host.NormalCursor;
}
internal void update()
{
}
public override Color ForeColor
{
get
{
if (this.IsCurrentUser)
{
return Color.Blue;
}
return base.ForeColor;
}
internal set
{
base.ForeColor = value;
}
}
public override int height
{
get
{
return 0x16;
}
}
private bool IsCurrentUser
{
get
{
return (this.member.Owner.Uri.Raw == this.member.Uri.Raw);
}
}
public PersonalGroupMember member
{
get
{
return this.m_member;
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -