protected void OnItemDoubleClicked(object sender, MouseButtonEventArgs e)
        {
            DependencyObject originalSource = e.OriginalSource as DependencyObject;

            if (originalSource != null)
            {
                if (originalSource is System.Windows.Documents.Run)
                {
                    originalSource = (originalSource as System.Windows.Documents.Run).Parent;
                }
                if ((originalSource is Visual) && !MainWindow.IsQZoneFlag(originalSource))
                {
                    ListBox     ancestorByType = VisualTree.GetAncestorByType(originalSource, typeof(ListBox)) as ListBox;
                    ListBoxItem container      = VisualTree.GetAncestorByType(originalSource, typeof(ListBoxItem)) as ListBoxItem;
                    if ((ancestorByType != null) && (container != null))
                    {
                        Buddy buddy = ancestorByType.ItemContainerGenerator.ItemFromContainer(container) as Buddy;
                        if (buddy != null)
                        {
                            Util_Buddy.OpenContactSessionWindow(buddy);
                        }
                        else
                        {
                            InstanceAnswerPro.Core.Community.Community community = ancestorByType.ItemContainerGenerator.ItemFromContainer(container) as InstanceAnswerPro.Core.Community.Community;
                            if (community != null)
                            {
                                Util_Buddy.OpenCommunitySessionWindow(community);
                            }
                        }
                        e.Handled = true;
                    }
                }
            }
        }
        public bool ProcessEnterKey()
        {
            Buddy selectedItem = this.RecentContactsBox.SelectedItem as Buddy;

            if (selectedItem != null)
            {
                Util_Buddy.OpenContactSessionWindow(selectedItem);
                return(true);
            }
            InstanceAnswerPro.Core.Community.Community community = this.RecentContactsBox.SelectedItem as InstanceAnswerPro.Core.Community.Community;
            if (community != null)
            {
                Util_Buddy.OpenCommunitySessionWindow(community);
                return(true);
            }
            return(false);
        }
        /// <summary>
        /// 执行群组成员管理
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void CommunitymemberMgr_Executed(object sender, ExecutedRoutedEventArgs e)
        {
            DependencyObject originalSource = e.OriginalSource as DependencyObject;

            if (originalSource != null)
            {
                ListBox     ancestorByType = VisualTree.GetAncestorByType(originalSource, typeof(ListBox)) as ListBox;
                ListBoxItem container      = VisualTree.GetAncestorByType(originalSource, typeof(ListBoxItem)) as ListBoxItem;
                if ((ancestorByType != null) && (container != null))
                {
                    InstanceAnswerPro.Core.Community.Community community = ancestorByType.ItemContainerGenerator.ItemFromContainer(container) as InstanceAnswerPro.Core.Community.Community;
                    if ((community != null) && Util_Group.IsManager(community, Util_Buddy.GetCurrentBuddy().Uin))
                    {
                        Util_Group.OpenCommunityInfoWindow(community, Util_Group.CommunityInfoWindowPageTag.PageMemberInfo);
                    }
                }
            }
        }
        public void Load()
        {
            this.recentContactCollection.Clear();
            string settingValue = "";

            ComponentManager.GetUserSettings().GetString("RecentContacts", ref settingValue);
            if (settingValue != null)
            {
                settingValue.Trim();
            }
            if (!string.IsNullOrEmpty(settingValue))
            {
                try
                {
                    foreach (string str2 in settingValue.Split(new char[] { ';' }))
                    {
                        if (str2.StartsWith("b"))
                        {
                            Buddy item = BuddyListBuilder.Instance.FindOrCreateBuddy(uint.Parse(str2.Substring(1)), false, false);
                            if (item != null)
                            {
                                this.recentContactCollection.Add(item);
                            }
                        }
                        else if (str2.StartsWith("g"))
                        {
                            InstanceAnswerPro.Core.Community.Community community = ComponentManager.GetCommunitiesManager().GetCommunity(uint.Parse(str2.Substring(1)));
                            if (community != null)
                            {
                                this.recentContactCollection.Add(community);
                            }
                        }
                    }
                }
                catch (Exception)
                {
                }
            }
        }
        public void OnNotifyMessage(Message message)
        {
            UICommandMessage message2 = message as UICommandMessage;

            if (message2 != null)
            {
                if (message2.CommandName == "AddRecentContact")
                {
                    InstanceAnswerPro.Core.MessageType messageType = (InstanceAnswerPro.Core.MessageType)message2.Parameter1;
                    uint id    = (uint)message2.Parameter2;
                    int  index = ObservableCollectionHelper.FindFirst <object>(this.recentContactCollection, delegate(object contact)
                    {
                        Buddy buddy = contact as Buddy;
                        InstanceAnswerPro.Core.Community.Community community = contact as InstanceAnswerPro.Core.Community.Community;
                        return((((messageType == InstanceAnswerPro.Core.MessageType.ContactMessage) && (buddy != null)) && (id == buddy.Uin)) || (((messageType == InstanceAnswerPro.Core.MessageType.CommunityMessage) && (community != null)) && (id == community.Id)));
                    });
                    if (index >= 0)
                    {
                        this.recentContactCollection.RemoveAt(index);
                    }
                    switch (messageType)
                    {
                    case InstanceAnswerPro.Core.MessageType.ContactMessage:
                    {
                        Buddy item = BuddyListBuilder.Instance.FindOrCreateBuddy(id, false, false);
                        if (item != null)
                        {
                            this.recentContactCollection.Insert(0, item);
                        }
                        break;
                    }

                    case InstanceAnswerPro.Core.MessageType.CommunityMessage:
                    {
                        InstanceAnswerPro.Core.Community.Community community = ComponentManager.GetCommunitiesManager().GetCommunity(id);
                        if (community != null)
                        {
                            this.recentContactCollection.Insert(0, community);
                        }
                        break;
                    }
                    }
                    int count = this.recentContactCollection.Count;
                    if (count > 30)
                    {
                        this.recentContactCollection.RemoveAt(count - 1);
                    }
                }
                else if (message2.CommandName == "RemoveRecentContact")
                {
                    InstanceAnswerPro.Core.MessageType messageType = (InstanceAnswerPro.Core.MessageType)message2.Parameter1;
                    uint id   = (uint)message2.Parameter2;
                    int  num3 = ObservableCollectionHelper.FindFirst <object>(this.recentContactCollection, delegate(object contact)
                    {
                        Buddy buddy = contact as Buddy;
                        InstanceAnswerPro.Core.Community.Community community = contact as InstanceAnswerPro.Core.Community.Community;
                        return((((messageType == InstanceAnswerPro.Core.MessageType.ContactMessage) && (buddy != null)) && (id == buddy.Uin)) || (((messageType == InstanceAnswerPro.Core.MessageType.CommunityMessage) && (community != null)) && (id == community.Id)));
                    });
                    if (num3 >= 0)
                    {
                        this.recentContactCollection.RemoveAt(num3);
                    }
                }
            }
        }