コード例 #1
0
        private void UserControl_Loaded(object sender, RoutedEventArgs e)
        {
            if (_embed.Type == "image" && _embed.Thumbnail != null)
            {
                var imageElement = new ImageElement()
                {
                    ImageUri = _embed.Thumbnail.ProxyUrl, ImageWidth = _embed.Thumbnail.Width, ImageHeight = _embed.Thumbnail.Height
                };
                imageElement.Tapped += ImageElement_Tapped;

                Content = imageElement;
                return;
            }

            if (_embed.Type == "gifv" && _embed.Video != null)
            {
                Logger.Log($"Image: {_embed.Image ?? (object)"null"}");
                var scaleContainer = new ScaledContentControl()
                {
                    TargetWidth  = _embed.Video.Width,
                    TargetHeight = _embed.Video.Height,
                };

                _mediaPlayer = new MediaPlayerElement()
                {
                    AreTransportControlsEnabled = false,
                    Source       = MediaSource.CreateFromUri(_embed.Video.Url),
                    PosterSource = _embed.Thumbnail != null ? new BitmapImage(_embed.Thumbnail.Url) : null
                };

                _mediaPlayer.Loaded   += MediaPlayer_Loaded;
                scaleContainer.Content = _mediaPlayer;
                Content = scaleContainer;

                if (App.RoamingSettings.Read(Constants.GIF_AUTOPLAY, true) && !NetworkHelper.IsNetworkLimited)
                {
                    Window.Current.VisibilityChanged += OnWindowVisibilityChanged;
                    _mediaPlayer.AutoPlay             = true;
                }
                else
                {
                    _mediaPlayer.Tapped  += OnMediaPlayerTapped;
                    _mediaPlayer.AutoPlay = false;
                }

                return;
            }

            if (_embed.Color.HasValue)
            {
                var col = _embed.Color.Value;
                Border.BorderBrush     = new SolidColorBrush(Color.FromArgb(255, col.R, col.G, col.B));
                Border.BorderThickness = new Thickness(4, 0, 0, 0);
            }

            if (_embed.Image != null)
            {
                var image = new ImageElement()
                {
                    ImageUri = _embed.Image.ProxyUrl, ImageWidth = _embed.Image.Width, ImageHeight = _embed.Image.Height
                };
                AddWithRow(image);
            }

            if (_embed.Video != null)
            {
                thumbnail.Visibility = Visibility.Collapsed;
                var video = new EmbedVideoControl()
                {
                    Embed = _embed, Thumbnail = _embed.Thumbnail, Video = _embed.Video
                };
                AddWithRow(video);
            }

            if (_embed.Fields?.Any() == true)
            {
                var inline = _embed.Fields.First().Inline;
                var p      = inline ? new WrapPanel() : (Panel) new StackPanel();
                foreach (var field in _embed.Fields)
                {
                    if (field.Inline == inline)
                    {
                        AddFieldToPanel(p, field);
                    }
                    else
                    {
                        if (p.Children.Count != 0)
                        {
                            AddWithRow(p);
                        }

                        inline = field.Inline;

                        p = inline ? new WrapPanel() : (Panel) new StackPanel();

                        AddFieldToPanel(p, field);
                    }
                }

                if (p.Children.Count != 0 && !fieldsGrid.Children.Contains(p))
                {
                    AddWithRow(p);
                }
            }

            Bindings.Update();
        }
コード例 #2
0
        private void UserControl_Loaded(object sender, RoutedEventArgs e)
        {
            if (Path.GetFileNameWithoutExtension(Attachment.Url).StartsWith("SPOILER_") && App.RoamingSettings.Read(Constants.ENABLE_SPOILERS, true))
            {
                spoilerOverlay.Visibility = Visibility.Visible;
            }

            var url           = Attachment.Url;
            var fileExtension = Path.GetExtension(url);

            if (_mediaExtensions.Contains(fileExtension))
            {
                var mediaPlayer = new MediaPlayerElement()
                {
                    AreTransportControlsEnabled = true,
                    Source       = MediaSource.CreateFromUri(new Uri(Attachment.ProxyUrl)),
                    PosterSource = Attachment.Width != 0 ? new BitmapImage(new Uri(Attachment.ProxyUrl + "?format=jpeg")) : null
                };

                mediaPlayer.TransportControls.Style     = (Style)App.Current.Resources["MediaTransportControlsStyle"];
                mediaPlayer.TransportControls.IsCompact = true;

                if (Attachment.Width == 0)
                {
                    if (ApiInformation.IsApiContractPresent("Windows.Foundation.UniversalApiContract", 5))
                    {
                        mediaPlayer.TransportControls.ShowAndHideAutomatically = false;
                    }

                    mediaPlayer.VerticalAlignment        = VerticalAlignment.Top;
                    mediaPlayer.VerticalContentAlignment = VerticalAlignment.Top;
                    detailsGrid.Visibility = Visibility.Collapsed;
                    _audioOnly             = true;
                }

                mainGrid.Content = mediaPlayer;

                _timer = new DispatcherTimer()
                {
                    Interval = TimeSpan.FromSeconds(3)
                };
                _timer.Tick += _timer_Tick;
            }
            else if (Attachment.Height != 0 && Attachment.Width != 0)
            {
                var imageElement = new ImageElement()
                {
                    ImageWidth  = Attachment.Width,
                    ImageHeight = Attachment.Height,
                    ImageUri    = new Uri(Attachment.ProxyUrl)
                };

                imageElement.Tapped += Image_Tapped;
                mainGrid.Content     = imageElement;

                _timer = new DispatcherTimer()
                {
                    Interval = TimeSpan.FromSeconds(3)
                };
                _timer.Tick += _timer_Tick;
            }
            else
            {
                detailsTransform.Y   = 0;
                grid.PointerEntered -= Grid_PointerEntered;
                grid.PointerExited  -= Grid_PointerExited;
            }
        }