📄 grouptree_widget.cs
字号:
namespace Imps.Client.Pc.BizControls
{
using Imps.Client;
using Imps.Client.Core;
using Imps.Client.Utils;
using std;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Runtime.CompilerServices;
using System.Windows.Forms;
public class grouptree_widget : tree_widget
{
private IContainer components;
private IComparer<tree_widget.item_type> m_cmp;
private Dictionary<PersonalGroup, tree<tree_widget.item_type>.iterator> m_group_iterator_map = new Dictionary<PersonalGroup, tree<tree_widget.item_type>.iterator>();
private Dictionary<pair<PersonalGroupMember, PersonalGroup>, tree<tree_widget.item_type>.iterator> m_member_iterator_map = new Dictionary<pair<PersonalGroupMember, PersonalGroup>, tree<tree_widget.item_type>.iterator>();
private bool m_show_detail = true;
public event group_click_portrait_handler on_group_click_portrait;
public event group_doubleclick_handler on_group_doubleclick;
public event group_expand_changed_handler on_group_expand_changed;
public event group_expand_changing_handler on_group_expand_changing;
public grouptree_widget()
{
this.PreInitializeComponent();
this.InitializeComponent();
this.PostInitializeComponent();
}
public tree<tree_widget.item_type>.iterator add_group(PersonalGroup group, bool fRepaint)
{
if (group == null)
{
throw new ArgumentNullException("group");
}
grouptree_group i = new grouptree_group(group);
i.context = group;
tree<tree_widget.item_type>.iterator left = base.insert(i, false);
if (!tree<tree_widget.item_type>.iterator.is_equal(left, base.end))
{
i.OnExpandChanged += new tree_widget.item_type.OnExpandChangedHandler(this.on_expand_group);
i.OnExpandChanging += new tree_widget.item_type.OnExpandChangingHandler(this.on_expanding_group);
i.on_group_click_portrait += new grouptree_group.group_click_portrait_handler(this.on_click_group_portrait);
i.expand = false;
this.m_group_iterator_map.Add(group, left);
}
if (fRepaint)
{
win32api_wrapper.PostMessage(base.Handle, 0x40a, (IntPtr) 2, IntPtr.Zero);
}
return left;
}
public tree<tree_widget.item_type>.iterator add_group_sorted(PersonalGroup group, bool fRepaint)
{
if (group == null)
{
throw new ArgumentNullException("group");
}
tree<tree_widget.item_type>.iterator iterator = this.add_group(group, false);
if (this.m_cmp != null)
{
base.sort_children(base.m_items.root, this.m_cmp, fRepaint);
}
return iterator;
}
public tree<tree_widget.item_type>.iterator add_member(PersonalGroup group, PersonalGroupMember member, bool fRepaint)
{
tree<tree_widget.item_type>.iterator right;
if (member == null)
{
throw new ArgumentNullException("group or member");
}
grouptree_member i = new grouptree_member(member);
i.context = member;
if (group != null)
{
tree<tree_widget.item_type>.iterator iterator2;
if (!this.m_group_iterator_map.TryGetValue(group, ref iterator2))
{
return base.end;
}
if ((iterator2 == null) || tree<tree_widget.item_type>.iterator.is_equal(base.end, iterator2))
{
return base.end;
}
right = base.insert(i, iterator2, fRepaint);
}
else
{
right = base.insert(i, fRepaint);
}
if ((right != null) && !tree<tree_widget.item_type>.iterator.is_equal(base.end, right))
{
this.m_member_iterator_map.Add(new pair<PersonalGroupMember, PersonalGroup>(member, group), right);
}
if (fRepaint)
{
win32api_wrapper.PostMessage(base.Handle, 0x40a, (IntPtr) 2, IntPtr.Zero);
}
return right;
}
public tree<tree_widget.item_type>.iterator add_member_sorted(PersonalGroup group, PersonalGroupMember member, bool fRepaint)
{
if (member == null)
{
throw new ArgumentNullException("member");
}
tree<tree_widget.item_type>.iterator iterator = this.add_member(group, member, false);
if (group == null)
{
this.sort_allitems(fRepaint);
return iterator;
}
this.sort_members(group, fRepaint);
return iterator;
}
public tree<tree_widget.item_type>.iterator add_waiting_item(PersonalGroup group, string strWaitingText, bool fRepaint)
{
if (strWaitingText == null)
{
return base.end;
}
tree<tree_widget.item_type>.iterator right = base.end;
if (group == null)
{
grouptree_waiting i = new grouptree_waiting(group, strWaitingText);
right = base.insert(i, fRepaint);
}
else
{
tree<tree_widget.item_type>.iterator iterator2;
if (!this.m_group_iterator_map.TryGetValue(group, ref iterator2))
{
return base.end;
}
if ((iterator2 == null) || tree<tree_widget.item_type>.iterator.is_equal(base.end, iterator2))
{
return base.end;
}
grouptree_waiting _waiting2 = new grouptree_waiting(group, strWaitingText);
right = base.insert(_waiting2, iterator2, fRepaint);
}
if ((right != null) && !tree<tree_widget.item_type>.iterator.is_equal(base.end, right))
{
this.m_member_iterator_map.Add(new pair<PersonalGroupMember, PersonalGroup>(null, group), right);
}
if (fRepaint)
{
win32api_wrapper.PostMessage(base.Handle, 0x40a, (IntPtr) 2, IntPtr.Zero);
}
return right;
}
public void clear_members(PersonalGroup group, bool fRepaint)
{
tree<tree_widget.item_type>.iterator right;
if (this.m_group_iterator_map.TryGetValue(group, ref right) && ((right != null) && !tree<tree_widget.item_type>.iterator.is_equal(base.end, right)))
{
try
{
tree<tree_widget.item_type>.iterator iterator2 = base.last_child(right);
if ((iterator2 != null) && !tree<tree_widget.item_type>.iterator.is_equal(base.end, iterator2))
{
iterator2 = tree<tree_widget.item_type>.iterator.op_Increment(iterator2);
for (tree<tree_widget.item_type>.iterator iterator3 = base.first_child(right); ((iterator3 != null) && !tree<tree_widget.item_type>.iterator.is_equal(base.end, iterator3)) && !tree<tree_widget.item_type>.iterator.is_equal(iterator2, iterator3); iterator3 = base.erase(iterator3, false))
{
this.m_member_iterator_map.Remove(new pair<PersonalGroupMember, PersonalGroup>((iterator3.data as grouptree_member).member, group));
}
}
if (fRepaint)
{
win32api_wrapper.PostMessage(base.Handle, 0x40a, (IntPtr) 2, IntPtr.Zero);
}
}
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 InitializeComponent()
{
this.components = new Container();
}
private void on_click_group_portrait(object sender)
{
try
{
if (this.on_group_click_portrait != null)
{
this.on_group_click_portrait(this, sender as grouptree_group);
}
}
catch (Exception exception)
{
ClientLogger.WriteException(exception);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -