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; } }
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(); } } }
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; } }