summaryrefslogtreecommitdiff
path: root/Juick/Classes
diff options
context:
space:
mode:
authorGravatar Vitaly Takmazov2012-02-12 01:53:36 +0400
committerGravatar Vitaly Takmazov2012-02-12 01:53:36 +0400
commit6a92a6a4d27dc07f8b32bd7d57ffbcbe15630ab9 (patch)
treecf62fc48a13eb5b8744b361acf47bdcd820751a1 /Juick/Classes
parent49eb44f852ab21e72c17bbc436ffa79525a1aba3 (diff)
Avatars support + broken clickable urls
Diffstat (limited to 'Juick/Classes')
-rw-r--r--Juick/Classes/RichTextConverter.cs58
1 files changed, 58 insertions, 0 deletions
diff --git a/Juick/Classes/RichTextConverter.cs b/Juick/Classes/RichTextConverter.cs
new file mode 100644
index 0000000..ee6ffa7
--- /dev/null
+++ b/Juick/Classes/RichTextConverter.cs
@@ -0,0 +1,58 @@
+using System;
+using System.Collections.Generic;
+using System.Globalization;
+using System.Net;
+using System.Windows;
+using System.Windows.Controls;
+using System.Windows.Data;
+using System.Windows.Documents;
+using System.Windows.Ink;
+using System.Windows.Input;
+using System.Windows.Media;
+using System.Windows.Media.Animation;
+using System.Windows.Shapes;
+using Microsoft.Phone.Tasks;
+
+namespace Juick.Classes
+{
+ public class RichTextConverter : IValueConverter
+ {
+ public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
+ {
+ var message = value as string;
+ var runs = new List<Inline>();
+
+ foreach (var word in message.Split(new char[] {' ', '\n'}))
+ {
+ Uri uri;
+
+ if (Uri.TryCreate(word, UriKind.Absolute, out uri) ||
+ (word.StartsWith("www.") && Uri.TryCreate("http://" + word, UriKind.Absolute, out uri)))
+ {
+ var link = new Hyperlink();
+ link.Inlines.Add(new Run() { Text = word });
+ link.Click += (sender, e) =>
+ {
+ var hyperLink = (sender as Hyperlink);
+ new WebBrowserTask() { Uri = uri }.Show();
+ };
+
+ runs.Add(link);
+ }
+ else
+ {
+ runs.Add(new Run() { Text = word });
+ }
+
+ runs.Add(new Run() { Text = " " });
+ }
+
+ return runs;
+ }
+
+ public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
+ {
+ return value;
+ }
+ }
+}