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