public void WriteMessage(ChatMessage message)
{
if (InvokeRequired)
{
Invoke(new Action<ChatMessage>(WriteMessage), message);
return;
}
if (message.from != null && IgnoreUser(message.from))
{
return;
}
ChatWindow window;
if ((MessageType)message.type == MessageType.Server || (MessageType)message.type == MessageType.System)
{
window = (ChatWindow)ChannelTabs.SelectedTab;
if (window == null)
{
window = new ChatWindow(((MessageType)message.type).ToString(), true) { IsSystemtab = true };
ChannelTabs.TabPages.Add(window);
window.WriteMessage(message, Autoscroll);
}
else window.WriteMessage(message, Autoscroll);
}
else if ((MessageType)message.type == MessageType.Join || (MessageType)message.type == MessageType.Leave || message.channel == null)
{
window = GetChatWindow(message.channel) ?? (ChatWindow)ChannelTabs.SelectedTab;
if (window == null)
{
window = new ChatWindow(message.type.ToString(CultureInfo.InvariantCulture), true) { IsSystemtab = true };
ChannelTabs.TabPages.Add(window);
window.WriteMessage(message, Autoscroll);
}
else window.WriteMessage(message, Autoscroll);
}
else if ((MessageType)message.type == MessageType.PrivateMessage && Program.Config.PmWindows)
{
if (m_pmWindows.ContainsKey(message.channel))
{
m_pmWindows[message.channel].WriteMessage(message);
}
else
{
m_pmWindows.Add(message.channel, new PmWindowFrm(message.channel, true));
m_pmWindows[message.channel].WriteMessage(message);
m_pmWindows[message.channel].Show();
m_pmWindows[message.channel].FormClosed += Chat_frm_FormClosed;
}
}
else if ((MessageType)message.type == MessageType.Team)
{
window = GetChatWindow(((MessageType)message.type).ToString());
if (window == null)
{
window = new ChatWindow(((MessageType)message.type).ToString(), (MessageType)message.type == MessageType.PrivateMessage);
ChannelTabs.TabPages.Add(window);
window.WriteMessage(message, Autoscroll);
}
else window.WriteMessage(message, Autoscroll);
}
else
{
window = GetChatWindow(message.channel);
if (window == null)
{
window = new ChatWindow(message.channel, (MessageType)message.type == MessageType.PrivateMessage);
ChannelTabs.TabPages.Add(window);
}
window.WriteMessage(message, Autoscroll);
}
}