public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { var str = value as string; if (String.IsNullOrEmpty(str)) { return(new TextBlock()); } var text = new TextBlock { TextWrapping = TextWrapping.Wrap }; HtmlParser.AppendTo(text, str.MakeLinksClickableIncludingMailto()); return(text); }
public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { var message = (Message)value; var text = new TextBlock { TextWrapping = TextWrapping.Wrap, Style = (Style)Application.Current.FindResource("TextBlockContentForegroundStyle") }; if (String.IsNullOrEmpty(message.BodyPreview)) { text.Inlines.Add(new TextBlock { Text = Strings.MessageHasNoBody, FontStyle = FontStyles.Italic }); } else { HtmlParser.AppendTo(text, message.BodyPreview.MakeLinksClickableIncludingMailto()); } return(text); }
public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { var status = (UserStatus)value; var channel = status.SourceChannel ?? ChannelsManager.Channels.First(c => c.Configuration.DisplayName == "Twitter").Configuration; var profileuri = channel.ProfileInfoBuilder.BuildServiceProfileUrl(status.From); Uri uri = Uri.IsWellFormedUriString(profileuri, UriKind.Absolute) ? new Uri(profileuri) : new Uri("http://www.google.com"); var sender = new WebHyperlink { NavigateUri = uri, FontWeight = FontWeights.Bold, Style = (Style)Application.Current.FindResource("TitleNameHyperlink") }; sender.Inlines.Add(new Run(status.From.DisplayName)); var text = new TextBlock { TextWrapping = TextWrapping.Wrap, Foreground = (Brush)Application.Current.FindResource("SlightlyDimmedForegroundColor") }; text.Inlines.Add(sender); text.Inlines.Add(" "); if (status.To != null) { var toProfileuri = channel.ProfileInfoBuilder.BuildServiceProfileUrl(status.To); Uri toUri = Uri.IsWellFormedUriString(toProfileuri, UriKind.Absolute) ? new Uri(toProfileuri) : new Uri("http://www.google.com"); var recipient = new WebHyperlink { NavigateUri = toUri, FontWeight = FontWeights.Bold, Style = (Style)Application.Current.FindResource("TitleNameHyperlink") }; recipient.Inlines.Add(new Run(status.To.DisplayName)); text.Inlines.Add(" » "); text.Inlines.Add(recipient); text.Inlines.Add(" "); } var source = status.Status.MakeLinksClickableIncludingMailto(); if (channel.DisplayName == "Twitter") { source = source.MakeTwitterLinksClickable(); } HtmlParser.AppendTo(text, source); foreach (var inline in text.Inlines) { // Attach markread handler to status updates if (inline is Hyperlink) { (inline as Hyperlink).Click += delegate { status.TrackAction(ActionType.Read); } } ; } text.Inlines.Add("\n"); text.Inlines.Add(new TextBlock { Text = status.SortDate.ToRelativeTime(), Opacity = 0.35, Style = (Style)Application.Current.FindResource("NormalTextBlock") }); return(text); }