public void HandleMessage(AMessage message, VSPCContext context) { var textMessage = (ATextMessage)message; bool messageShown = false; mainWindow.DoInUIThread(() => { foreach (var ccTab in mainWindow.CommChannelTabs.Where(t => !t.IsAllTab)) { if (ccTab.MessageBelongsToMe(textMessage, context.Callsign)) { messageShown |= (!ccTab.IsAllTab || textMessage.SenderIsServer); // Only mark message as shown if the message is shown in a tab other than "All" with server messages as exception ccTab.ShowMessage(textMessage); } } if (!messageShown && NewTabShouldBeOpened(textMessage, context)) { CommChannelTab newCommTab = mainWindow.AddNewCommTab(textMessage.Sender); newCommTab.ShowMessage(textMessage); messageShown = true; } var allTab = mainWindow.CommChannelTabs.Single(t => t.IsAllTab); if (messageShown || textMessage.SenderIsServer) { allTab.ShowMessage(textMessage); } }); }
internal CommChannelTab AddNewCommTab(string receiver) { var newTabItem = new TabItem() { Header = receiver, Content = new ListBox() }; tabControl1.Items.Add(newTabItem); var newCommChannelTab = new CommChannelTab() { TabItem = newTabItem, ListBox = (ListBox)newTabItem.Content, ChannelName = "", ChannelFreq = receiver, IsPrivateChat = true }; commChannelTabs.Add(newCommChannelTab); return(newCommChannelTab); }
internal CommChannelTab AddNewCommTab(string receiver) { var newTabItem = new TabItem() { Header = receiver, Content = new ListBox() }; tabControl1.Items.Add(newTabItem); var newCommChannelTab = new CommChannelTab() { TabItem = newTabItem, ListBox = (ListBox) newTabItem.Content, ChannelName = "", ChannelFreq = receiver, IsPrivateChat = true }; commChannelTabs.Add(newCommChannelTab); return newCommChannelTab; }