Пример #1
0
        public StartingUpView()
        {
            InitializeComponent();

            Navigator = new DefaultLinkNavigator();
            Task.Factory.StartNew(() =>
            {
                var configuration = new BusConfiguration();
                configuration.EnableFeature <GetMessageTypesFeature>();

                SessionContext.Instance.Bus = EndpointConfig.Init(configuration);
            }, CancellationToken.None, TaskCreationOptions.LongRunning, TaskScheduler.Default).ContinueWith(_ =>
            {
                Navigator.Navigate(new Uri("/MessagesView.xaml", UriKind.Relative), this);
            });
        }
Пример #2
0
        public static Inline Parse(string bbCode, FrameworkElement element = null, ILinkNavigator navigator = null)
        {
            if (bbCode.IndexOf('[') != -1)
            {
                try {
                    return(new BbCodeParser(bbCode, element)
                    {
                        Commands = (navigator ?? DefaultLinkNavigator).Commands
                    }.Parse());
                } catch (Exception e) {
                    Logging.Error(e);
                }
            }

            return(new Run {
                Text = bbCode
            });
        }
Пример #3
0
 /// <summary>Helper for setting <see cref="LinkNavigatorProperty"/> on <paramref name="element"/>.</summary>
 /// <param name="element"><see cref="DependencyObject"/> to set <see cref="LinkNavigatorProperty"/> on.</param>
 /// <param name="value">LinkNavigator property value.</param>
 public static void SetLinkNavigator(this DependencyObject element, ILinkNavigator value)
 {
     element.SetValue(LinkNavigatorProperty, value);
 }
Пример #4
0
        public static Inline ParseEmoji(string bbCode, FrameworkElement element = null, ILinkNavigator navigator = null)
        {
            var converted = new StringBuilder();
            var lastIndex = 0;
            var complex   = false;

            for (var i = 0; i < bbCode.Length; i++)
            {
                var c = bbCode[i];

                if (c == '[')
                {
                    complex = true;
                    continue;
                }

                int length;
                if (Emoji.IsEmoji(bbCode, i, out length))
                {
                    if (lastIndex != i)
                    {
                        converted.Append(bbCode.Substring(lastIndex, i - lastIndex));
                    }

                    var emoji = bbCode.Substring(i, length);
                    converted.Append($"[img=\"emoji://{EmojiToNumber(emoji)}\"]{emoji}[/img]");
                    lastIndex = i + length;
                    complex   = true;
                }

                // Even if it’s not an emoji, it still would be better to jump over high surrogates
                if (length > 1)
                {
                    i += length - 1;
                }
            }

            if (converted.Length > 0)
            {
                converted.Append(bbCode.Substring(lastIndex));
                bbCode = converted.ToString();
            }

            if (complex)
            {
                try {
                    return(new BbCodeParser(bbCode, element)
                    {
                        Commands = (navigator ?? DefaultLinkNavigator).Commands
                    }.Parse());
                } catch (Exception e) {
                    Logging.Error(e);
                }
            }

            return(new Run {
                Text = bbCode
            });
        }