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

📄 personalgrouplistcontrol.cs

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