Beispiel #1
0
        private void OnPropertyChanged(DependencyObject d, DependencyProperty prop)
        {
            // Accent color
            if (EmbedContent.Color != 0)
            {
                SideBorder.Background = Common.IntToColor(EmbedContent.Color);
            }
            else
            {
                SideBorder.Background = (SolidColorBrush)App.Current.Resources["LightBG"];
            }

            // Author
            if (EmbedContent.Author != null)
            {
                AuthorSP.Visibility = Visibility.Visible;
                AuthorText.Content  = EmbedContent.Author.Name;
                if (EmbedContent.Author.Url != null)
                {
                    AuthorText.NavigateUri = new Uri(EmbedContent.Author.Url);
                }
                if (EmbedContent.Author.IconUrl == null)
                {
                    AuthorImage.Visibility = Visibility.Collapsed;
                }
                else
                {
                    AuthorImage.Visibility       = Visibility.Visible;
                    AuthorImageBrush.ImageSource = new BitmapImage(new Uri(EmbedContent.Author.IconUrl));
                }
            }
            else
            {
                AuthorSP.Visibility = Visibility.Collapsed;
            }

            // Title
            if (EmbedContent.Title != null)
            {
                if (EmbedContent.Url == null)
                {
                    UrlTitleBlock.Visibility   = Visibility.Collapsed;
                    PlainTitleBlock.Visibility = Visibility.Visible;
                    PlainTitleBlock.Text       = EmbedContent.Title;
                }
                else
                {
                    PlainTitleBlock.Visibility = Visibility.Collapsed;
                    UrlTitleBlock.Visibility   = Visibility.Visible;
                    UrlTitleBlock.Content      = EmbedContent.Title;
                    UrlTitleBlock.NavigateUri  = new Uri(EmbedContent.Url);

                    // Share Icon (CU is weird here)
                    if (App.FCU)
                    {
                        ShareButton.Visibility = Visibility.Visible;
                    }
                    else
                    {
                        CUShareButton.Visibility = Visibility.Visible;
                    }
                }
            }
            else
            {
                PlainTitleBlock.Visibility = Visibility.Collapsed;
                UrlTitleBlock.Visibility   = Visibility.Collapsed;
            }

            // Description
            if (EmbedContent.Description != null)
            {
                DescriptionBlock.Visibility = Visibility.Visible;
                DescriptionBlock.Text       = EmbedContent.Description;
            }
            else
            {
                DescriptionBlock.Visibility = Visibility.Collapsed;
            }

            // Fields
            UniversalWrapPanel previousWrapPanel = null;

            FieldsStacker.Children.Clear();
            if (EmbedContent.Fields != null)
            {
                FieldsStacker.Visibility = Visibility.Visible;
                foreach (var field in EmbedContent.Fields)
                {
                    if (field.Inline)
                    {
                        if (previousWrapPanel == null)
                        {
                            previousWrapPanel = new UniversalWrapPanel()
                            {
                                Orientation = Orientation.Horizontal
                            }
                        }
                        ;
                        previousWrapPanel.Children.Add(GenerateField(field));
                    }
                    else
                    {
                        if (previousWrapPanel != null)
                        {
                            FieldsStacker.Children.Add(previousWrapPanel);
                            previousWrapPanel = null;
                        }
                        FieldsStacker.Children.Add(GenerateField(field));
                    }
                }
                if (previousWrapPanel != null)
                {
                    FieldsStacker.Children.Add(previousWrapPanel);
                }
            }
            else
            {
                FieldsStacker.Visibility = Visibility.Collapsed;
            }

            // Content
            if (EmbedContent.Image != null)
            {
                type = Type.Image;
                ImageViewbox.Visibility = Visibility.Collapsed;
                player.Visibility       = Visibility.Collapsed;
                PreviewIcon.Glyph       = "";
                if (!NetworkSettings.GetTTL())
                {
                    ShowPreview();
                }
                else
                {
                    PreviewButton.Visibility = Visibility.Visible;
                }
                if ((EmbedContent.Author == null || (EmbedContent.Author.Name == null && EmbedContent.Author.IconUrl == null)) &&
                    EmbedContent.Description == null && EmbedContent.Fields != null &&
                    EmbedContent.Fields.Count() == 0 && EmbedContent.Footer.Text == null &&
                    EmbedContent.Footer.IconUrl == null && EmbedContent.Title == null)
                {
                    stacker.Margin   = new Thickness(0);
                    SideBorder.Width = 0;
                }
            }
            else if (EmbedContent.Video != null)
            {
                type = Type.Video;
                ImageViewbox.Visibility = Visibility.Collapsed;
                player.Visibility       = Visibility.Collapsed;
                PreviewIcon.Glyph       = "";
                if (!NetworkSettings.GetTTL())
                {
                    ShowPreview();
                }
                else
                {
                    PreviewButton.Visibility = Visibility.Visible;
                }
                player.Height = Math.Min(EmbedContent.Video.Height, this.Height);
                player.Width  = Math.Min(EmbedContent.Video.Width, this.Width);
                if ((EmbedContent.Author == null || (EmbedContent.Author.Name == null && EmbedContent.Author.IconUrl == null)) &&
                    EmbedContent.Description == null && EmbedContent.Fields != null &&
                    EmbedContent.Fields.Count() == 0 && EmbedContent.Footer.Text == null &&
                    EmbedContent.Footer.IconUrl == null && EmbedContent.Title == null)
                {
                    stacker.Margin   = new Thickness(0);
                    SideBorder.Width = 0;
                }
            }
            else
            {
                ImageViewbox.Visibility = Visibility.Collapsed;
                player.Visibility       = Visibility.Collapsed;
            }

            // Footer
            if (EmbedContent.Footer == null && EmbedContent.Timestamp == null)
            {
                FooterSP.Visibility = Visibility.Collapsed;
            }
            else
            {
                FooterSP.Visibility = Visibility.Visible;
                string footertext = "";
                if (EmbedContent.Footer?.Text != null)
                {
                    footertext = EmbedContent.Footer.Text;
                }
                if (EmbedContent.Timestamp != null)
                {
                    if (footertext != "")
                    {
                        footertext += " | ";
                    }
                    footertext     += Common.HumanizeDate(DateTime.Parse(EmbedContent.Timestamp), null);
                    FooterText.Text = footertext;
                }
                else
                {
                    FooterText.Text = footertext;
                }
                if (EmbedContent.Footer != null && EmbedContent.Footer.IconUrl != null)
                {
                    FooterImage.Visibility = Visibility.Visible;
                    FooterImage.Source     = new BitmapImage(new Uri(EmbedContent.Footer.IconUrl));
                }
                else
                {
                    FooterImage.Visibility = Visibility.Collapsed;
                }
            }

            // Provider
            if (EmbedContent.Provider != null)
            {
                ProviderHyperlink.Visibility = Visibility.Visible;
                ProviderHyperlink.Content    = EmbedContent.Provider.Name;
                if (EmbedContent.Provider.Url != null)
                {
                    ProviderHyperlink.NavigateUri = new Uri(EmbedContent.Provider.Url);
                }
            }
            else
            {
                ProviderHyperlink.Visibility = Visibility.Collapsed;
            }

            // Thumbnail
            if (EmbedContent.Thumbnail != null)
            {
                if (EmbedContent.Type == "article")
                {
                    ThumbnailColumn.Width     = new GridLength(0, GridUnitType.Pixel);
                    ThumbnailImage.Visibility = Visibility.Collapsed;
                    ImageViewbox.Visibility   = Visibility.Visible;
                    ImageViewer.Source        = new BitmapImage(new Uri(EmbedContent.Thumbnail.Url));
                }
                else
                {
                    ThumbnailColumn.Width     = new GridLength(1, GridUnitType.Star);
                    ThumbnailImage.Visibility = Visibility.Visible;
                    ThumbnailImage.Source     = new BitmapImage(new Uri(EmbedContent.Thumbnail.Url));
                }
            }
            else
            {
                ThumbnailColumn.Width     = new GridLength(0, GridUnitType.Pixel);
                ThumbnailImage.Visibility = Visibility.Collapsed;
            }
        }
Beispiel #2
0
        private async void OnPropertyChanged(DependencyObject d, DependencyProperty prop)
        {
            //Accent color
            if (EmbedContent.Color != 0)
            {
                SideBorder.Background = Common.IntToColor(EmbedContent.Color);
            }
            else
            {
                SideBorder.Background = (SolidColorBrush)App.Current.Resources["LightBG"];
            }

            //Author
            if (EmbedContent.Author != null)
            {
                AuthorSP.Visibility = Visibility.Visible;
                AuthorText.Content  = EmbedContent.Author.Name;
                if (EmbedContent.Author.Url != null)
                {
                    AuthorText.NavigateUri = new Uri(EmbedContent.Author.Url);
                }
                if (EmbedContent.Author.IconUrl == null)
                {
                    AuthorImage.Visibility = Visibility.Collapsed;
                }
                else
                {
                    AuthorImage.Visibility = Visibility.Visible; AuthorImageBrush.ImageSource = new BitmapImage(new Uri(EmbedContent.Author.IconUrl));
                }
            }
            else
            {
                AuthorSP.Visibility = Visibility.Collapsed;
            }
            //Title
            if (EmbedContent.Title != null)
            {
                if (EmbedContent.Url == null)
                {
                    // Hide title and url content
                    UrlTitleBlock.Visibility   = Visibility.Collapsed;
                    PlainTitleBlock.Visibility = Visibility.Visible;
                    PlainTitleBlock.Text       = EmbedContent.Title;
                }
                else
                {
                    // Show title and url
                    PlainTitleBlock.Visibility = Visibility.Collapsed;
                    UrlTitleBlock.Visibility   = Visibility.Visible;
                    UrlTitleBlock.Content      = EmbedContent.Title;
                    UrlTitleBlock.NavigateUri  = new Uri(EmbedContent.Url);

                    // For some reason, the creators update will crash if you show the icon in the wrong way
                    if (App.FCU)
                    {
                        ShareButton.Visibility = Visibility.Visible;
                    }
                    else
                    {
                        CUShareButton.Visibility = Visibility.Visible;
                    }
                }
            }
            else
            {
                // No title, collapse url and title
                PlainTitleBlock.Visibility = Visibility.Collapsed;
                UrlTitleBlock.Visibility   = Visibility.Collapsed;
            }

            //Description
            if (EmbedContent.Description != null)
            {
                DescriptionBlock.Visibility = Visibility.Visible;
                DescriptionBlock.Text       = EmbedContent.Description;
            }
            else
            {
                DescriptionBlock.Visibility = Visibility.Collapsed;
            }

            //Fields
            UniversalWrapPanel previousWrapPanel = null;

            // Clear fields
            FieldsStacker.Children.Clear();

            // If there are fields
            if (EmbedContent.Fields != null)
            {
                // Show field stacker
                FieldsStacker.Visibility = Visibility.Visible;
                foreach (var field in EmbedContent.Fields)
                {
                    // Add feed in line
                    if (field.Inline)
                    {
                        if (previousWrapPanel == null)
                        {
                            previousWrapPanel = new UniversalWrapPanel()
                            {
                                Orientation = Orientation.Horizontal
                            }
                        }
                        ;
                        previousWrapPanel.Children.Add(GenerateField(field));
                    }
                    else
                    {
                        // Add feed at end
                        if (previousWrapPanel != null)
                        {
                            FieldsStacker.Children.Add(previousWrapPanel);
                            previousWrapPanel = null;
                        }
                        FieldsStacker.Children.Add(GenerateField(field));
                    }
                }
                if (previousWrapPanel != null)
                {
                    FieldsStacker.Children.Add(previousWrapPanel);
                }
            }
            else
            {
                // No feeds, hide stacker
                FieldsStacker.Visibility = Visibility.Collapsed;
            }

            //Image
            if (EmbedContent.Image != null)
            {
                // Show Image
                ImageViewbox.Visibility = Visibility.Visible;
                ImageViewer.Source      = new BitmapImage(new Uri(EmbedContent.Image.Url));

                // Show with no border if all other fields are null
                if (EmbedContent.Author.Name == null && EmbedContent.Author.IconUrl == null &&
                    EmbedContent.Description == null && EmbedContent.Fields.Count() == 0 &&
                    EmbedContent.Footer.Text == null && EmbedContent.Footer.IconUrl == null &&
                    EmbedContent.Title == null)
                {
                    stacker.Margin   = new Thickness(0);
                    SideBorder.Width = 0;
                }
            }
            else
            {
                // Hide image
                ImageViewbox.Visibility = Visibility.Collapsed;
            }

            //Footer
            // If there's no footer and no timestamp
            if (EmbedContent.Footer == null && EmbedContent.Timestamp == null)
            {
                // Hide footer
                FooterSP.Visibility = Visibility.Collapsed;
            }
            else
            {
                // Show footer
                FooterSP.Visibility = Visibility.Visible;
                string footertext = "";

                // Footer
                if (EmbedContent.Footer.Text != null)
                {
                    footertext = EmbedContent.Footer.Text;
                }

                // Timestamp
                if (EmbedContent.Timestamp != null)
                {
                    if (footertext != "")
                    {
                        footertext += " | ";
                    }
                    footertext     += Common.HumanizeDate(DateTime.Parse(EmbedContent.Timestamp), null);
                    FooterText.Text = footertext;
                }
                else
                {
                    FooterText.Text = footertext;
                }

                // Icon
                if (EmbedContent.Footer != null)
                {
                    FooterImage.Visibility = Visibility.Visible;
                    FooterImage.Source     = new BitmapImage(new Uri(EmbedContent.Footer.IconUrl));
                }
                else
                {
                    FooterImage.Visibility = Visibility.Collapsed;
                }
            }

            // Provider
            if (EmbedContent.Provider != null)
            {
                // Show domain
                ProviderHyperlink.Visibility = Visibility.Visible;
                ProviderHyperlink.Content    = EmbedContent.Provider.Name;
                if (EmbedContent.Provider.Url != null)
                {
                    ProviderHyperlink.NavigateUri = new Uri(EmbedContent.Provider.Url);
                }
            }
            else
            {
                // Hide domain view
                ProviderHyperlink.Visibility = Visibility.Collapsed;
            }

            // Thumbnail
            if (EmbedContent.Thumbnail != null)
            {
                // Article Thumbnail
                if (EmbedContent.Type == "article")
                {
                    // Hide thumbnail view
                    ThumbnailColumn.Width     = new GridLength(0, GridUnitType.Pixel);
                    ThumbnailImage.Visibility = Visibility.Collapsed;

                    // Show article thumbnail
                    ImageViewbox.Visibility = Visibility.Visible;
                    ImageViewer.Source      = new BitmapImage(new Uri(EmbedContent.Thumbnail.Url));
                }
                else
                {
                    // Other thumbnails
                    ThumbnailColumn.Width     = new GridLength(1, GridUnitType.Star);
                    ThumbnailImage.Visibility = Visibility.Visible;
                    ThumbnailImage.Source     = new BitmapImage(new Uri(EmbedContent.Thumbnail.Url));
                }
            }
            else
            {
                // Hide thumbnail view
                ThumbnailColumn.Width     = new GridLength(0, GridUnitType.Pixel);
                ThumbnailImage.Visibility = Visibility.Collapsed;
            }

            // Show RykenTube player
            Regex YouTubeRegex = new Regex(@"(?:https:\/\/)?(?:(?:www\.)?youtube\.com\/watch\?.*?v=([\w\-]+)|youtu\.be\/([\w\-]+))", RegexOptions.Compiled);
            var   match        = YouTubeRegex.Match(EmbedContent.Url);

            if (match.Success)
            {
                EmbedView.Visibility   = Visibility.Collapsed;
                RykenPlayer.Visibility = Visibility.Visible;

                if (RykenPlayer.CurrentMediaHandler == null)
                {
                    myTubeHandlerContainer mediaHandler = new myTubeHandlerContainer();
                    RykenPlayer.CurrentMediaHandler = mediaHandler;
                    await mediaHandler.SetCurrentVideoHandler(new MediaPlayerHandler { UseMediaPlayerElement = false });

                    mediaHandler.CurrentVideoHandler.HandlesTransportControls = true;  // Disable the media transport controls
                    mediaHandler.CurrentVideoHandler.StopOnMediaEnded         = false; // Keep video loaded when ended
                    await mediaHandler.CurrentVideoHandler.OpenVideo(new YouTubeEntry { ID = match.Groups[1].Value != "" ? match.Groups[1].Value : match.Groups[2].Value }, YouTubeQuality.HD);

                    await mediaHandler.CurrentVideoHandler.Pause();
                }
            }
        }
Beispiel #3
0
        private void OnPropertyChanged(DependencyObject d, DependencyProperty prop)
        {
            //bool everythingisnull = true;
            //Accent color
            if (EmbedContent.Color != 0)
                SideBorder.Background = Common.IntToColor(EmbedContent.Color);
            else
                SideBorder.Background = (SolidColorBrush)App.Current.Resources["LightBG"];

            //Author
            if (EmbedContent.Author.Name != null)
            {
                //everythingisnull = false;
                AuthorSP.Visibility=Visibility.Visible;
                AuthorText.Content = EmbedContent.Author.Name;
                if(EmbedContent.Author.Url != null)
                    AuthorText.NavigateUri = new Uri(EmbedContent.Author.Url);
                if(EmbedContent.Author.IconUrl == null) AuthorImage.Visibility = Visibility.Collapsed;
                else
                { AuthorImage.Visibility = Visibility.Visible; AuthorImageBrush.ImageSource = new BitmapImage(new Uri(EmbedContent.Author.IconUrl)); }
            }
            else
            {
                AuthorSP.Visibility=Visibility.Collapsed;
            }
            //Title
            if (EmbedContent.Title != null)
            {
                //everythingisnull = false;
                if (EmbedContent.Url == null)
                {
                    UrlTitleBlock.Visibility = Visibility.Collapsed;
                    PlainTitleBlock.Visibility = Visibility.Visible;
                    PlainTitleBlock.Text = EmbedContent.Title;
                }
                else
                {
                    PlainTitleBlock.Visibility = Visibility.Collapsed;
                    UrlTitleBlock.Visibility = Visibility.Visible;
                    UrlTitleBlock.Content = EmbedContent.Title;
                    UrlTitleBlock.NavigateUri = new Uri(EmbedContent.Url);
                    if (App.FCU)
                    {
                        ShareButton.Visibility = Visibility.Visible;
                    }
                    else
                    {
                        CUShareButton.Visibility = Visibility.Visible;
                    }
                }
            }
            else
            {
                PlainTitleBlock.Visibility = Visibility.Collapsed;
                UrlTitleBlock.Visibility = Visibility.Collapsed;
            }
            //Description
            if (EmbedContent.Description != null)
            {
                //everythingisnull = false;
                DescriptionBlock.Visibility = Visibility.Visible;
                DescriptionBlock.Text = EmbedContent.Description;
            }
            else
            {
                DescriptionBlock.Visibility = Visibility.Collapsed;
            }

            //Fields
            UniversalWrapPanel previousWrapPanel= null;
            FieldsStacker.Children.Clear();
            if (EmbedContent.Fields != null)
            {
                //everythingisnull = false;
                FieldsStacker.Visibility = Visibility.Visible;
                foreach (var field in EmbedContent.Fields)
                {
                    if (field.Inline)
                    {
                        if (previousWrapPanel == null)
                            previousWrapPanel = new UniversalWrapPanel(){Orientation=Orientation.Horizontal};
                        previousWrapPanel.Children.Add(GenerateField(field));
                    }
                    else
                    {
                        if (previousWrapPanel != null)
                        {
                            FieldsStacker.Children.Add(previousWrapPanel);
                            previousWrapPanel = null;
                        }
                        FieldsStacker.Children.Add(GenerateField(field));
                    }
                }
                if (previousWrapPanel != null)
                {
                    FieldsStacker.Children.Add(previousWrapPanel);
                }
            }
            else
            {
                FieldsStacker.Visibility = Visibility.Collapsed;
            }

            //Image
            if (EmbedContent.Image.Url != null)
            {
                //everythingisnull = false;
                ImageViewbox.Visibility = Visibility.Visible;
                ImageViewer.Source = new BitmapImage(new Uri(EmbedContent.Image.Url));
                if(EmbedContent.Author.Name == null && EmbedContent.Author.IconUrl == null
                    && EmbedContent.Description == null && EmbedContent.Fields != null
                    && EmbedContent.Fields.Count() == 0  && EmbedContent.Footer.Text == null
                    && EmbedContent.Footer.IconUrl == null && EmbedContent.Title == null)
                {
                    stacker.Margin = new Thickness(0);
                    SideBorder.Width = 0;
                }
            }
            else
            {
                ImageViewbox.Visibility = Visibility.Collapsed;
            }

            //Footer
            if (EmbedContent.Footer.Text == null && EmbedContent.Timestamp == null)
                FooterSP.Visibility = Visibility.Collapsed;
            else
            {
                FooterSP.Visibility = Visibility.Visible;
                string footertext = "";
                if (EmbedContent.Footer.Text != null)
                    footertext = EmbedContent.Footer.Text;
                if (EmbedContent.Timestamp != null)
                {
                    if (footertext != "") footertext += " | ";
                    footertext += Common.HumanizeDate(DateTime.Parse(EmbedContent.Timestamp), null);
                    FooterText.Text = footertext;
                }
                else
                {
                    FooterText.Text = footertext;
                }
                if (EmbedContent.Footer.IconUrl != null)
                {
                    FooterImage.Visibility = Visibility.Visible;
                    FooterImage.Source = new BitmapImage(new Uri(EmbedContent.Footer.IconUrl));
                }
                else
                {
                    FooterImage.Visibility = Visibility.Collapsed;
                }
            }

            //Provider
            if (EmbedContent.Provider.Name != null)
            {
                //everythingisnull = false;
                ProviderHyperlink.Visibility = Visibility.Visible;
                ProviderHyperlink.Content = EmbedContent.Provider.Name;
                if (EmbedContent.Provider.Url != null)
                    ProviderHyperlink.NavigateUri = new Uri(EmbedContent.Provider.Url);
            }
            else
            {
                ProviderHyperlink.Visibility = Visibility.Collapsed;
            }
            //Thumbnail
            if (EmbedContent.Thumbnail.Url != null)
            {
                if (EmbedContent.Type == "article")
                {
                    ThumbnailColumn.Width = new GridLength(0, GridUnitType.Pixel);
                    ThumbnailImage.Visibility = Visibility.Collapsed;
                    ImageViewbox.Visibility = Visibility.Visible;
                    ImageViewer.Source = new BitmapImage(new Uri(EmbedContent.Thumbnail.Url));
                }
                else
                {
                    ThumbnailColumn.Width = new GridLength(1, GridUnitType.Star);
                    ThumbnailImage.Visibility = Visibility.Visible;
                    ThumbnailImage.Source = new BitmapImage(new Uri(EmbedContent.Thumbnail.Url));
                }
            }
            else
            {
                ThumbnailColumn.Width = new GridLength(0, GridUnitType.Pixel);
                ThumbnailImage.Visibility = Visibility.Collapsed;
            }
        }