private void ParseText(string value) { if (value == null) { value = ""; } if (_stackPanel == null) { return; } // Clear previous TextBlocks _stackPanel.Children.Clear(); var suppressParsing = BrowserNavigationService.GetSuppressParsing(this); var message = DataContext as TLMessageBase; var fitIn2000Pixels = CheckFitInMaxRenderHeight(value); if (fitIn2000Pixels) { var textBlock = GetTextBlock(); BrowserNavigationService.SetSuppressParsing(textBlock, suppressParsing); BrowserNavigationService.SetMessage(textBlock, message); BrowserNavigationService.SetText(textBlock, value); _stackPanel.Children.Add(textBlock); } else { ParseLineExtended(value); } }
private void ParseText(string value) { if (value == null) { value = ""; } if (_stackPanel == null) { return; } //System.Diagnostics.Debug.WriteLine("{0} ParseText", GetHashCode()); // Clear previous TextBlocks _stackPanel.Children.Clear(); var suppressParsing = BrowserNavigationService.GetSuppressParsing(this); var message = DataContext as TLMessageBase ?? BrowserNavigationService.GetMessage(this); var decryptedMessage = DataContext as TLDecryptedMessageBase; var fitIn2000Pixels = CheckFitInMaxRenderHeight(value); if (fitIn2000Pixels) { var textBlock = GetTextBlock(); BrowserNavigationService.SetSuppressParsing(textBlock, suppressParsing); BrowserNavigationService.SetMessage(textBlock, message); BrowserNavigationService.SetDecryptedMessage(textBlock, decryptedMessage); BrowserNavigationService.SetAddFooter(textBlock, true); BrowserNavigationService.SetText(textBlock, value); _stackPanel.Children.Add(textBlock); _footerRun = GetFooter(textBlock); } else { ParseLineExtended(value); } }
private void ParseLineExtended(string allText) { if (string.IsNullOrEmpty(allText)) { return; } int cutIndex = MAX_STR_LENGTH; if (cutIndex >= allText.Length) { cutIndex = allText.Length - 1; } var endOfSentenceIndAfterCut = allText.IndexOf(".", cutIndex); if (endOfSentenceIndAfterCut >= 0 && endOfSentenceIndAfterCut - cutIndex < 200) { cutIndex = endOfSentenceIndAfterCut; } else { var whiteSpaceIndAfterCut = allText.IndexOf(' ', cutIndex); if (whiteSpaceIndAfterCut >= 0 && whiteSpaceIndAfterCut - cutIndex < 100) { cutIndex = whiteSpaceIndAfterCut; } } // add all whitespaces before cut while (cutIndex + 1 < allText.Length && allText[cutIndex + 1] == ' ') { cutIndex++; } var suppressParsing = BrowserNavigationService.GetSuppressParsing(this); var message = DataContext as TLMessageBase; var decryptedMessage = DataContext as TLDecryptedMessageBase; var leftSide = allText.Substring(0, cutIndex + 1); allText = allText.Substring(cutIndex + 1); var isLastTextBlock = allText.Length <= 0; var textBlock = GetTextBlock(); BrowserNavigationService.SetSuppressParsing(textBlock, suppressParsing); BrowserNavigationService.SetMessage(textBlock, message); BrowserNavigationService.SetDecryptedMessage(textBlock, decryptedMessage); if (isLastTextBlock) { BrowserNavigationService.SetAddFooter(textBlock, true); } BrowserNavigationService.SetText(textBlock, leftSide); _stackPanel.Children.Add(textBlock); _footerRun = GetFooter(textBlock); if (!isLastTextBlock) { ParseLineExtended(allText); } }