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); } }
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); } }