From edef9894af198da690c0381bf43d4dafddf16f0d Mon Sep 17 00:00:00 2001 From: Vitaly Takmazov Date: Fri, 1 Feb 2013 04:13:36 +0400 Subject: replace RichTextBox and Attached Property with subclassed RichTextBox and plain Dependency Property. Somehow fixes #11 --- Juick/Classes/RichTextConverter.cs | 78 -------------------------------------- 1 file changed, 78 deletions(-) delete mode 100644 Juick/Classes/RichTextConverter.cs (limited to 'Juick/Classes/RichTextConverter.cs') diff --git a/Juick/Classes/RichTextConverter.cs b/Juick/Classes/RichTextConverter.cs deleted file mode 100644 index 4f78b96..0000000 --- a/Juick/Classes/RichTextConverter.cs +++ /dev/null @@ -1,78 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Globalization; -using System.Linq; -using System.Text.RegularExpressions; -using System.Windows.Data; -using System.Windows.Documents; - -namespace Juick.Classes -{ - public class RichTextConverter : IValueConverter - { - static readonly Regex UrlRegex = new Regex(@"http(s)?://([\w+?\.\w+])+([a-zA-Z0-9\~\!\@\#\$\%\^\&\*\(\)_\-\=\+\\\/\?\.\:\;\'\,]*)?", RegexOptions.Compiled); - // TODO: Add more entities - static readonly Regex JuickEntityRegex = new Regex(@"#(\d+)(/\d+)?", RegexOptions.Compiled); - - public object Convert(object value, Type targetType, object parameter, CultureInfo culture) - { - var stringValue = (string)value; - if (string.IsNullOrEmpty(stringValue)) - { - return Enumerable.Empty(); - } - - var result = new List(); - var index = 0; - foreach (var match in UrlRegex.Matches(stringValue).OfType().Union(JuickEntityRegex.Matches(stringValue).OfType())) - { - Uri uri = null; - if (!Uri.TryCreate(match.Value, UriKind.Absolute, out uri)) - { - // Juick entity - uri = new Uri(string.Format("/ThreadView.xaml?mid={0}", JuickEntityRegex.Replace(match.Value, "$1")), UriKind.Relative); - } - if (match.Index > 0) - { - var length = match.Index - index; - if (length > 0) - { - result.Add(new Run { Text = stringValue.Substring(index, length) }); - } - } - - var hyperLink = new Hyperlink - { - NavigateUri = uri - }; - if (uri.IsAbsoluteUri) - { - hyperLink.TargetName = "_blank"; - hyperLink.Inlines.Add(uri.Host); - } - else - { - hyperLink.Inlines.Add(match.Value); - } - result.Add(hyperLink); - - index = match.Index + match.Length; - } - - if (index == 0 || index < stringValue.Length - 1) - { - var lastRunText = stringValue.Substring(index); - if (lastRunText.Length > 0) - { - result.Add(new Run { Text = lastRunText }); - } - } - return result; - } - - public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) - { - return value; - } - } -} -- cgit v1.2.3