Beispiel #1
0
        public override void Init()
        {
            InputControl.SendMessage += new TextInput.SendMessageHandler(InputControl_SendMessage);
            InputControl.SendFile    += new MethodInvoker(InputControl_SendFile);
            InputControl.IgnoreUser  += new MethodInvoker(InputControl_IgnoreUser);
            InputControl.AddBuddy    += new MethodInvoker(InputControl_AddBuddy);

            IM.ReSearchUser(UserID);
            IM_StatusUpdate(UserID);
            DisplayLog();

            InputControl.InputBox.Select();

            if (External != null)
            {
                External.Activated  += new EventHandler(External_Activated);
                External.Deactivate += new EventHandler(External_Deactivate);
            }

            if (!Core.Buddies.BuddyList.SafeContainsKey(UserID))
            {
                InputControl.AddBuddyButton.Visible = true;
            }


            VoiceService voices = Core.GetService(ServiceIDs.Voice) as VoiceService;

            if (voices != null)
            {
                VoiceButton = new VoiceToolstripButton(voices);
                InputControl.FontToolStrip.Items.Add(VoiceButton);
                VoiceButton.SetUsers(new List <ulong>()
                {
                    Core.UserID, UserID
                }, AudioDirection.Both);
            }
        }
Beispiel #2
0
        void Chat_MembersUpdate()
        {
            MemberTree.BeginUpdate();

            MemberTree.Nodes.Clear();
            NodeMap.Clear();

            List <ulong> users = new List <ulong>();

            Room.Members.LockReading(delegate()
            {
                if (Room.Members.SafeCount == 0)
                {
                    MemberTree.EndUpdate();
                    return;
                }

                users = Room.Members.ToList();

                TreeListNode root = MemberTree.virtualParent;

                if (Room.Host != 0)
                {
                    root = new MemberNode(this, Room.Host);

                    if (Room.IsLoop)
                    {
                        ((MemberNode)root).IsLoopRoot = true;
                    }
                    else
                    {
                        NodeMap[Room.Host] = root as MemberNode;
                    }

                    UpdateNode(root as MemberNode);

                    MemberTree.Nodes.Add(root);
                    root.Expand();
                }

                foreach (ulong id in Room.Members)
                {
                    if (id != Room.Host)
                    {
                        // if they left the room dont show them
                        if (!ChatService.IsCommandRoom(Room.Kind))
                        {
                            if (Room.Members.SafeCount == 0)
                            {
                                continue;
                            }
                        }

                        MemberNode node = new MemberNode(this, id);
                        NodeMap[id]     = node;
                        UpdateNode(node);
                        GuiUtils.InsertSubNode(root, node);
                    }
                }
            });

            MemberTree.EndUpdate();

            if (VoiceButton != null)
            {
                AudioDirection direction = AudioDirection.Both;

                if (ParentView.ViewHigh != null && ParentView.ViewLow != null)
                {
                    if (Room.Kind == RoomKind.Command_High || Room.Kind == RoomKind.Live_High)
                    {
                        direction = AudioDirection.Left;
                    }

                    else if (Room.Kind == RoomKind.Command_Low || Room.Kind == RoomKind.Live_Low)
                    {
                        direction = AudioDirection.Right;
                    }
                }

                VoiceButton.SetUsers(users, direction);
            }
        }