📄 personalgrouplistcontrol.cs
字号:
namespace Imps.Client.Pc
{
using Imps.Client;
using Imps.Client.Core;
using Imps.Client.Pc.BizControls;
using Imps.Client.Pc.Properties;
using Imps.Client.Pc.WndlessControls;
using Imps.Client.Resource;
using Imps.Client.Utils;
using std;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Windows.Forms;
public class PersonalGroupListControl : UserControl
{
private IFrameworkWindow _framework;
private PersonalGroup _group;
private ContactCollection _groupContacts;
private WndlessLabel _lblSearchNone;
private ContactMatchHelper _matchHelper;
private WndlessControlCollection _wndlessCtls;
private IContainer components;
private vscroll_widget m_buddytree_vscroll_widget;
private menu_widget menuBlank;
private menu_widget menuGroup;
private menu_widget menuMember;
private menu_widget menuMemberManager;
private ToolStripSeparator toolStripMenuItem2;
private ToolStripSeparator toolStripMenuItem3;
private ToolStripSeparator toolStripMenuItem7;
private ToolStripSeparator toolStripMenuItem8;
private grouptree_widget treeGroups;
private ToolStripMenuItem tsAddFriend;
private ToolStripMenuItem tsBlockMember;
private ToolStripMenuItem tsCancelManager;
private ToolStripMenuItem tsCreateGroup;
private ToolStripMenuItem tsDeleteGroup;
private ToolStripMenuItem tsDeleteMember;
private ToolStripMenuItem tsExitGroup;
private ToolStripMenuItem tsGroupManage;
private ToolStripMenuItem tsGroupMessageHistory;
private ToolStripMenuItem tsGroupSetting;
private ToolStripMenuItem tsGroupWebSite;
private ToolStripMenuItem tsInviteFriends;
private ToolStripMenuItem tsMemberInfo;
private ToolStripMenuItem tsMemberMessageHistory;
private ToolStripMenuItem tsModifyGroupNickName;
private ToolStripMenuItem tsSearchGroup;
private ToolStripMenuItem tsSendGroupMessage;
private ToolStripMenuItem tsSendGroupSMS;
private ToolStripMenuItem tsSendMemberMessage;
private ToolStripSeparator tsSeparatorForManager;
private ToolStripSeparator tsSeperatorForAdd;
private ToolStripSeparator tsSeperatorForBlock;
private ToolStripSeparator tsSeperatorForInfo;
private ToolStripMenuItem tsSetManager;
private ToolStripMenuItem tsSetSuperManager;
public PersonalGroupListControl(IFrameworkWindow framework)
{
this.InitializeComponent();
this._framework = framework;
}
public PersonalGroupListControl(IFrameworkWindow framework, PersonalGroup group) : this(framework)
{
this._group = group;
}
private void _group_MemberLoadStatusChanged(object sender, GroupLoadStatusChangedEventArgs e)
{
this.DoAfterMemberLoadStatusChanged(this._group, e.ListChanged);
}
private void AddGroupMembers(PersonalGroup group)
{
try
{
lock (group.Members.SyncObject)
{
using (IEnumerator<PersonalGroupMember> enumerator = group.Members.GetEnumerator())
{
while (enumerator.MoveNext())
{
PersonalGroupMember member = enumerator.get_Current();
this.treeGroups.add_member((this._group == null) ? group : null, member, false);
}
}
}
this.treeGroups.sort_allitems(true);
}
catch (Exception exception)
{
ClientLogger.WriteException(exception);
}
}
private void AddGroups()
{
using (IEnumerator<PersonalGroup> enumerator = this.Currentuser.PersonalGroups.GetEnumerator())
{
while (enumerator.MoveNext())
{
PersonalGroup group = enumerator.get_Current();
this.AddPersonalGroup(group, false);
}
}
this.treeGroups.sort_allitems(true);
}
private void AddPersonalGroup(PersonalGroup group, bool fpaint)
{
try
{
group.MemberLoadStatusChanged += new EventHandler<GroupLoadStatusChangedEventArgs>(this, (IntPtr) this.group_MemberLoadStatusChanged);
this.treeGroups.add_group(group, fpaint);
}
catch (Exception exception)
{
ClientLogger.WriteException(exception);
}
}
protected override void Dispose(bool disposing)
{
if (disposing && (this.components != null))
{
this.components.Dispose();
}
base.Dispose(disposing);
}
private void DoAfterMemberLoadStatusChanged(PersonalGroup group, bool changed)
{
if (group.MemberLoadStatus == PersonalGroupLoadStatus.Loading)
{
if (group.Members.Count != 0)
{
this.treeGroups.clear_members(group, false);
this.AddGroupMembers(group);
}
else
{
this.treeGroups.add_waiting_item(this._group ?? group, "加载中...", true);
}
}
else
{
try
{
this.treeGroups.remove_waiting_item(this._group ?? group, false);
if (changed)
{
if (this._group == null)
{
this.treeGroups.clear_members(group, false);
}
else
{
this.treeGroups.remove_allitems(false);
}
this.AddGroupMembers(group);
}
}
catch (Exception exception)
{
ClientLogger.WriteException(exception);
}
}
}
private void FindFocusItem(Control c)
{
foreach (Control control in c.Controls)
{
bool focused = c.Focused;
this.FindFocusItem(control);
}
}
private void group_MemberLoadStatusChanged(object sender, GroupLoadStatusChangedEventArgs e)
{
this.DoAfterMemberLoadStatusChanged(sender as PersonalGroup, e.ListChanged);
}
private void InitContextMenu()
{
try
{
this.treeGroups.set_ContextMenuStrip(this.menuBlank);
this.menuBlank.add_Opening(new CancelEventHandler(this.menuBlank_Opening));
this.treeGroups.OnFocusedItemChanged += new tree_widget.OnFocusedItemChangedHandler(this.treeGroups_OnFocusedItemChanged);
this.menuGroup.add_Opening(new CancelEventHandler(this.menuGroup_Opening));
this.menuMember.add_Opening(new CancelEventHandler(this.menuMember_Opening));
}
catch (Exception exception)
{
ClientLogger.WriteException(exception);
}
}
private void InitCoreEvent()
{
if (this._group == null)
{
this.InitGroupCoreEventForMainForm();
}
else
{
this.InitGroupCoreEventForConversation();
}
base.Disposed += new EventHandler(this.PersonalGroupListControl_Disposed);
}
private void InitGroupCoreEventForConversation()
{
try
{
this.Currentuser.PersonalGroupManager.MemberDeleted += new EventHandler<GroupMemberDeletedEventArgs>(this, (IntPtr) this.PersonalGroupManager_MemberDeleted);
this.Currentuser.PersonalGroupManager.MemberDestroyed += new EventHandler<MemberDestroyedEventArgs>(this, (IntPtr) this.PersonalGroupManager_MemberDestroyed);
this.Currentuser.PersonalGroupManager.MemberExited += new EventHandler<PersonalGroupMemberEventArgs>(this, (IntPtr) this.PersonalGroupManager_MemberExited);
this.Currentuser.PersonalGroupManager.MemberJoined += new EventHandler<PersonalGroupMemberEventArgs>(this, (IntPtr) this.PersonalGroupManager_MemberJoined);
this.Currentuser.PersonalGroupManager.MembersInfoChanged += new EventHandler<GroupMembersInfoChangedEventArgs>(this, (IntPtr) this.PersonalGroupManager_MemberInfoChanged);
}
catch (Exception exception)
{
ClientLogger.WriteException(exception);
}
}
private void InitGroupCoreEventForMainForm()
{
try
{
this.Currentuser.PersonalGroupManager.MemberDeleted += new EventHandler<GroupMemberDeletedEventArgs>(this, (IntPtr) this.PersonalGroupManager_MemberDeleted);
this.Currentuser.PersonalGroupManager.MemberDestroyed += new EventHandler<MemberDestroyedEventArgs>(this, (IntPtr) this.PersonalGroupManager_MemberDestroyed);
this.Currentuser.PersonalGroupManager.MemberExited += new EventHandler<PersonalGroupMemberEventArgs>(this, (IntPtr) this.PersonalGroupManager_MemberExited);
this.Currentuser.PersonalGroupManager.MemberJoined += new EventHandler<PersonalGroupMemberEventArgs>(this, (IntPtr) this.PersonalGroupManager_MemberJoined);
this.Currentuser.PersonalGroupManager.MembersInfoChanged += new EventHandler<GroupMembersInfoChangedEventArgs>(this, (IntPtr) this.PersonalGroupManager_MemberInfoChanged);
this.Currentuser.PersonalGroupManager.GroupAdded += new EventHandler<PersonalGroupEventArgs>(this, (IntPtr) this.PersonalGroupManager_GroupAdded);
this.Currentuser.PersonalGroupManager.GroupDeleted += new EventHandler<PersonalGroupEventArgs>(this, (IntPtr) this.PersonalGroupManager_GroupDeleted);
this.Currentuser.PersonalGroupManager.GroupRemoved += new EventHandler<PersonalGroupEventArgs>(this, (IntPtr) this.PersonalGroupManager_GroupRemoved);
this.Currentuser.PersonalGroupManager.MeBeDeleted += new EventHandler<PersonalGroupEventArgs>(this, (IntPtr) this.PersonalGroupManager_MeBeDeleted);
this.Currentuser.PersonalGroupManager.GroupInfoChanged += new EventHandler<PersonalGroupEventArgs>(this, (IntPtr) this.PersonalGroupManager_GroupInfoChanged);
this.Currentuser.PersonalGroupManager.ReplyResult += new EventHandler<PersonalGroupReplyResultEventArgs>(this, (IntPtr) this.PersonalGroupManager_ReplyResult);
}
catch (Exception exception)
{
ClientLogger.WriteException(exception);
}
}
private void InitGroupTree()
{
if (this._group == null)
{
this.InitPersonalGroupTreeForMainFrom();
}
else
{
this.InitPersonalTreeForConversation();
}
}
private void InitializeComponent()
{
this.components = new Container();
ComponentResourceManager manager = new ComponentResourceManager(typeof(PersonalGroupListControl));
crystal_band_colors _colors = new crystal_band_colors();
crystal_band_colors _colors2 = new crystal_band_colors();
crystal_band_colors _colors3 = new crystal_band_colors();
this.m_buddytree_vscroll_widget = new vscroll_widget();
this.treeGroups = new grouptree_widget();
this.menuGroup = new menu_widget(this.components);
this.tsSendGroupMessage = new ToolStripMenuItem();
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -