public override VisualLineElement ConstructElement(int offset)
            {
                var result = this.FindMatch(offset);

                if (result != null)
                {
                    if (result.Type == "State")
                    {
                        var size = (double)new FontSizeConverter().ConvertFromString(Settings.Instance.Global_Fonts_Message_FontSize + "pt");

                        var image = new Image() { Height = (size - 3), Width = (size - 3), Margin = new Thickness(1.5, 1.5, 0, 0) };
                        if (result.Value == "#") image.Source = StatesIconManager.Instance.Green;
                        else if (result.Value == "!") image.Source = StatesIconManager.Instance.Red;
                        else if (result.Value == "@") image.Source = StatesIconManager.Instance.Yello;

                        var element = new CustomObjectElement(result.Value, image);

                        element.ClickEvent += (string text) =>
                        {
                            this.OnSelectEvent(new CustomElementRange(offset, offset + result.Value.Length));
                        };

                        return element;
                    }
                    else if (result.Type == "Signature")
                    {
                        Brush brush;

                        if (Inspect.ContainTrustSignature(result.Value)) brush = new SolidColorBrush(_serviceManager.Config.Colors.Message_Trust);
                        else brush = new SolidColorBrush(_serviceManager.Config.Colors.Message_Untrust);

                        var element = new CustomTextElement(result.Value);
                        element.Foreground = brush;

                        element.ClickEvent += (string text) =>
                        {
                            this.OnSelectEvent(new CustomElementRange(offset, offset + result.Value.Length));
                        };

                        return element;
                    }
                    else if (result.Type == "Uri")
                    {
                        var uri = result.Value;

                        CustomObjectElement element = null;

                        if (uri.StartsWith("http:") | uri.StartsWith("https:"))
                        {
                            var textBlock = new TextBlock();
                            textBlock.Text = uri.Substring(0, Math.Min(64, uri.Length)) + ((uri.Length > 64) ? "..." : "");
                            textBlock.ToolTip = HttpUtility.UrlDecode(uri);

                            if (Settings.Instance.Global_UrlHistorys.Contains(uri)) textBlock.Foreground = new SolidColorBrush(_serviceManager.Config.Colors.Link);
                            else textBlock.Foreground = new SolidColorBrush(_serviceManager.Config.Colors.Link_New);

                            element = new CustomObjectElement(uri, textBlock);
                        }
                        else if (uri.StartsWith("Tag:"))
                        {
                            var tag = AmoebaConverter.FromTagString(uri);

                            var textBlock = new TextBlock();
                            textBlock.Text = uri.Substring(0, Math.Min(64, uri.Length)) + ((uri.Length > 64) ? "..." : "");
                            textBlock.ToolTip = MessageConverter.ToInfoMessage(tag);

                            if (Settings.Instance.Global_TagHistorys.Contains(tag)) textBlock.Foreground = new SolidColorBrush(_serviceManager.Config.Colors.Link);
                            else textBlock.Foreground = new SolidColorBrush(_serviceManager.Config.Colors.Link_New);

                            element = new CustomObjectElement(uri, textBlock);
                        }
                        else if (uri.StartsWith("Seed:"))
                        {
                            var seed = AmoebaConverter.FromSeedString(uri);

                            var textBlock = new TextBlock();
                            textBlock.Text = uri.Substring(0, Math.Min(64, uri.Length)) + ((uri.Length > 64) ? "..." : "");
                            textBlock.ToolTip = MessageConverter.ToInfoMessage(seed);

                            if (Settings.Instance.Global_SeedHistorys.Contains(seed)) textBlock.Foreground = new SolidColorBrush(_serviceManager.Config.Colors.Link);
                            else textBlock.Foreground = new SolidColorBrush(_serviceManager.Config.Colors.Link_New);

                            element = new CustomObjectElement(uri, textBlock);
                        }

                        if (element != null)
                        {
                            element.ClickEvent += (string text) =>
                            {
                                this.OnSelectEvent(new CustomElementRange(offset, offset + result.Value.Length));
                                this.OnClickEvent(text);
                            };

                            return element;
                        }
                    }
                }

                return null;
            }
            public override VisualLineElement ConstructElement(int offset)
            {
                var result = this.FindMatch(offset);

                if (result != null)
                {
                    if (result.Type == "State")
                    {
                        double size = (double)new FontSizeConverter().ConvertFromString(SettingsManager.Instance.ViewInfo.Fonts.Chat_Message.FontSize + "pt");

                        var image = new Image()
                        {
                            Height = (size - 3), Width = (size - 3), Margin = new Thickness(1.5, 1.5, 0, 0)
                        };
                        if (result.Value == "!")
                        {
                            image.Source = AmoebaEnvironment.Images.YelloBall;
                        }
                        else if (result.Value == "#")
                        {
                            image.Source = AmoebaEnvironment.Images.GreenBall;
                        }

                        var element = new CustomObjectElement(result.Value, image);

                        element.ClickEvent += (string text) =>
                        {
                            this.OnSelectEvent(new CustomElementRange(offset, offset + result.Value.Length));
                        };

                        return(element);
                    }
                    else if (result.Type == "Signature")
                    {
                        Brush brush;

                        if (_trustSignatures.Contains(Signature.Parse(result.Value)))
                        {
                            brush = new SolidColorBrush((Color)ColorConverter.ConvertFromString(SettingsManager.Instance.ViewInfo.Colors.Message_Trust));
                        }
                        else
                        {
                            brush = new SolidColorBrush((Color)ColorConverter.ConvertFromString(SettingsManager.Instance.ViewInfo.Colors.Message_Untrust));
                        }

                        var element = new CustomTextElement(result.Value);
                        element.Foreground = brush;

                        element.ClickEvent += (string text) =>
                        {
                            this.OnSelectEvent(new CustomElementRange(offset, offset + result.Value.Length));
                        };

                        return(element);
                    }
                    else if (result.Type == "Uri")
                    {
                        string uri = result.Value;

                        CustomObjectElement element = null;

                        if (uri.StartsWith("http:") | uri.StartsWith("https:"))
                        {
                            var textBlock = new TextBlock();
                            textBlock.Text    = uri.Substring(0, Math.Min(64, uri.Length)) + ((uri.Length > 64) ? "..." : "");
                            textBlock.ToolTip = HttpUtility.UrlDecode(uri);

                            element = new CustomObjectElement(uri, textBlock);
                        }
                        else if (uri.StartsWith("Tag:"))
                        {
                            var tag = AmoebaConverter.FromTagString(uri);

                            var textBlock = new TextBlock();
                            textBlock.Text = uri.Substring(0, Math.Min(64, uri.Length)) + ((uri.Length > 64) ? "..." : "");

                            element = new CustomObjectElement(uri, textBlock);
                        }
                        else if (uri.StartsWith("Seed:"))
                        {
                            var seed = AmoebaConverter.FromSeedString(uri);

                            var textBlock = new TextBlock();
                            textBlock.Text = uri.Substring(0, Math.Min(64, uri.Length)) + ((uri.Length > 64) ? "..." : "");

                            element = new CustomObjectElement(uri, textBlock);
                        }

                        if (element != null)
                        {
                            element.ClickEvent += (string text) =>
                            {
                                this.OnSelectEvent(new CustomElementRange(offset, offset + result.Value.Length));
                                this.OnClickEvent(text);
                            };

                            return(element);
                        }
                    }
                }

                return(null);
            }
Example #3
0
            public override VisualLineElement ConstructElement(int offset)
            {
                var result = this.FindMatch(offset);

                if (result != null)
                {
                    if (result.Type == "State")
                    {
                        var size = (double)new FontSizeConverter().ConvertFromString(Settings.Instance.Global_Fonts_Message_FontSize + "pt");

                        var image = new Image()
                        {
                            Height = (size - 3), Width = (size - 3), Margin = new Thickness(1.5, 1.5, 0, 0)
                        };
                        if (result.Value == "#")
                        {
                            image.Source = StatesIconManager.Instance.Green;
                        }
                        else if (result.Value == "!")
                        {
                            image.Source = StatesIconManager.Instance.Red;
                        }
                        else if (result.Value == "@")
                        {
                            image.Source = StatesIconManager.Instance.Yello;
                        }

                        var element = new CustomObjectElement(result.Value, image);

                        element.ClickEvent += (string text) =>
                        {
                            this.OnSelectEvent(new CustomElementRange(offset, offset + result.Value.Length));
                        };

                        return(element);
                    }
                    else if (result.Type == "Signature")
                    {
                        Brush brush;

                        if (Inspect.ContainTrustSignature(result.Value))
                        {
                            brush = new SolidColorBrush(_serviceManager.Config.Colors.Message_Trust);
                        }
                        else
                        {
                            brush = new SolidColorBrush(_serviceManager.Config.Colors.Message_Untrust);
                        }

                        var element = new CustomTextElement(result.Value);
                        element.Foreground = brush;

                        element.ClickEvent += (string text) =>
                        {
                            this.OnSelectEvent(new CustomElementRange(offset, offset + result.Value.Length));
                        };

                        return(element);
                    }
                    else if (result.Type == "Uri")
                    {
                        var uri = result.Value;

                        CustomObjectElement element = null;

                        if (uri.StartsWith("http:") | uri.StartsWith("https:"))
                        {
                            var textBlock = new TextBlock();
                            textBlock.Text    = uri.Substring(0, Math.Min(64, uri.Length)) + ((uri.Length > 64) ? "..." : "");
                            textBlock.ToolTip = HttpUtility.UrlDecode(uri);

                            if (Settings.Instance.Global_UrlHistorys.Contains(uri))
                            {
                                textBlock.Foreground = new SolidColorBrush(_serviceManager.Config.Colors.Link);
                            }
                            else
                            {
                                textBlock.Foreground = new SolidColorBrush(_serviceManager.Config.Colors.Link_New);
                            }

                            element = new CustomObjectElement(uri, textBlock);
                        }
                        else if (uri.StartsWith("Tag:"))
                        {
                            var tag = AmoebaConverter.FromTagString(uri);

                            var textBlock = new TextBlock();
                            textBlock.Text    = uri.Substring(0, Math.Min(64, uri.Length)) + ((uri.Length > 64) ? "..." : "");
                            textBlock.ToolTip = MessageConverter.ToInfoMessage(tag);

                            if (Settings.Instance.Global_TagHistorys.Contains(tag))
                            {
                                textBlock.Foreground = new SolidColorBrush(_serviceManager.Config.Colors.Link);
                            }
                            else
                            {
                                textBlock.Foreground = new SolidColorBrush(_serviceManager.Config.Colors.Link_New);
                            }

                            element = new CustomObjectElement(uri, textBlock);
                        }
                        else if (uri.StartsWith("Seed:"))
                        {
                            var seed = AmoebaConverter.FromSeedString(uri);

                            var textBlock = new TextBlock();
                            textBlock.Text    = uri.Substring(0, Math.Min(64, uri.Length)) + ((uri.Length > 64) ? "..." : "");
                            textBlock.ToolTip = MessageConverter.ToInfoMessage(seed);

                            if (Settings.Instance.Global_SeedHistorys.Contains(seed))
                            {
                                textBlock.Foreground = new SolidColorBrush(_serviceManager.Config.Colors.Link);
                            }
                            else
                            {
                                textBlock.Foreground = new SolidColorBrush(_serviceManager.Config.Colors.Link_New);
                            }

                            element = new CustomObjectElement(uri, textBlock);
                        }

                        if (element != null)
                        {
                            element.ClickEvent += (string text) =>
                            {
                                this.OnSelectEvent(new CustomElementRange(offset, offset + result.Value.Length));
                                this.OnClickEvent(text);
                            };

                            return(element);
                        }
                    }
                }

                return(null);
            }