Radegast.IMTextManager.PrintIM C# (CSharp) Method

PrintIM() private method

private PrintIM ( System.DateTime timestamp, string fromName, UUID fromID, string message, bool isNewMessage ) : void
timestamp System.DateTime
fromName string
fromID UUID
message string
isNewMessage bool
return void
        private void PrintIM(DateTime timestamp, string fromName, UUID fromID, string message, bool isNewMessage)
        {
            if (showTimestamps)
            {
                if(fontSettings.ContainsKey("Timestamp"))
                {
                    var fontSetting = fontSettings["Timestamp"];
                    textPrinter.ForeColor = fontSetting.ForeColor;
                    textPrinter.BackColor = fontSetting.BackColor;
                    textPrinter.Font = fontSetting.Font;
                    textPrinter.PrintText(DateTime.Now.ToString("[HH:mm] "));
                }
                else
                {
                    textPrinter.ForeColor = SystemColors.GrayText;
                    textPrinter.BackColor = Color.Transparent;
                    textPrinter.Font = Settings.FontSetting.DefaultFont;
                    textPrinter.PrintText(DateTime.Now.ToString("[HH:mm] "));
                }
            }

            if(fontSettings.ContainsKey("Name"))
            {
                var fontSetting = fontSettings["Name"];
                textPrinter.ForeColor = fontSetting.ForeColor;
                textPrinter.BackColor = fontSetting.BackColor;
                textPrinter.Font = fontSetting.Font;
            }
            else
            {
                textPrinter.ForeColor = SystemColors.WindowText;
                textPrinter.BackColor = Color.Transparent;
                textPrinter.Font = Settings.FontSetting.DefaultFont;
            }

            if (instance.GlobalSettings["av_name_link"])
            {
                textPrinter.InsertLink(fromName, string.Format("secondlife:///app/agent/{0}/about", fromID));
            }
            else
            {
                textPrinter.PrintText(fromName);
            }

            StringBuilder sb = new StringBuilder();

            if (message.StartsWith("/me "))
            {
                if(fontSettings.ContainsKey("Emote"))
                {
                    var fontSetting = fontSettings["Emote"];
                    textPrinter.ForeColor = fontSetting.ForeColor;
                    textPrinter.BackColor = fontSetting.BackColor;
                    textPrinter.Font = fontSetting.Font;
                }
                else
                {
                    textPrinter.ForeColor = SystemColors.WindowText;
                    textPrinter.BackColor = Color.Transparent;
                    textPrinter.Font = Settings.FontSetting.DefaultFont;
                }

                sb.Append(message.Substring(3));
            }
            else
            {
                if(fromID == instance.Client.Self.AgentID)
                {
                    if(fontSettings.ContainsKey("OutgoingIM"))
                    {
                        var fontSetting = fontSettings["OutgoingIM"];
                        textPrinter.ForeColor = fontSetting.ForeColor;
                        textPrinter.BackColor = fontSetting.BackColor;
                        textPrinter.Font = fontSetting.Font;
                    }
                    else
                    {
                        textPrinter.ForeColor = SystemColors.WindowText;
                        textPrinter.BackColor = Color.Transparent;
                        textPrinter.Font = Settings.FontSetting.DefaultFont;
                    }
                }
                else
                {
                    if(fontSettings.ContainsKey("IncomingIM"))
                    {
                        var fontSetting = fontSettings["IncomingIM"];
                        textPrinter.ForeColor = fontSetting.ForeColor;
                        textPrinter.BackColor = fontSetting.BackColor;
                        textPrinter.Font = fontSetting.Font;
                    }
                    else
                    {
                        textPrinter.ForeColor = SystemColors.WindowText;
                        textPrinter.BackColor = Color.Transparent;
                        textPrinter.Font = Settings.FontSetting.DefaultFont;
                    }
                }

                sb.Append(": ");
                sb.Append(message);
            }

            if(isNewMessage)
            {
                instance.LogClientMessage(sessionName + ".txt", fromName + sb.ToString());
            }

            textPrinter.PrintTextLine(sb.ToString());
        }