⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 grouptree_widget.cs

📁 破解的飞信源代码
💻 CS
📖 第 1 页 / 共 2 页
字号:
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 + -