Exemplo n.º 1
0
        public IAsyncOperation <ContentDialogBaseResult> ShowAsync(GallerySecretViewModel parameter, Func <FrameworkElement> closing)
        {
            _destructed   = false;
            _playedOnce   = false;
            _lastPosition = TimeSpan.Zero;

            _closing = closing;

            ConnectedAnimationService.GetForCurrentView().PrepareToAnimate("FullScreenPicture", _closing());

            DataContext = parameter;
            Bindings.Update();

            RoutedEventHandler handler = null;

            handler = new RoutedEventHandler(async(s, args) =>
            {
                Loaded -= handler;
                await ViewModel.OnNavigatedToAsync(parameter, NavigationMode.New, null);
            });

            Loaded += handler;
            return(ShowAsync());
        }
Exemplo n.º 2
0
        public static async void SecretDownload_Click(FrameworkElement sender, TransferCompletedEventArgs e)
        {
            var element = sender as FrameworkElement;
            var message = element.DataContext as TLMessage;

            if (message == null)
            {
                return;
            }

            var bubble = element.Ancestors <MessageBubbleBase>().FirstOrDefault() as MessageBubbleBase;

            if (bubble == null)
            {
                return;
            }

            if (message.IsMediaUnread && !message.IsOut)
            {
                var vector = new TLVector <int> {
                    message.Id
                };
                if (message.Parent is TLChannel channel)
                {
                    bubble.ContextBase.Aggregator.Publish(new TLUpdateChannelReadMessagesContents {
                        ChannelId = channel.Id, Messages = vector
                    });
                    bubble.ContextBase.ProtoService.ReadMessageContentsAsync(channel.ToInputChannel(), vector, result =>
                    {
                        message.IsMediaUnread = false;
                        message.RaisePropertyChanged(() => message.IsMediaUnread);
                    });
                }
                else
                {
                    bubble.ContextBase.Aggregator.Publish(new TLUpdateReadMessagesContents {
                        Messages = vector
                    });
                    bubble.ContextBase.ProtoService.ReadMessageContentsAsync(vector, result =>
                    {
                        message.IsMediaUnread = false;
                        message.RaisePropertyChanged(() => message.IsMediaUnread);
                    });
                }
            }

            var media = element.Ancestors().FirstOrDefault(x => x is FrameworkElement && ((FrameworkElement)x).Name.Equals("Media")) as FrameworkElement;

            if (media == null)
            {
                media = element;
            }

            if (media is Grid grid)
            {
                // TODO: WARNING!!!
                media = grid.Children[1] as FrameworkElement;
            }

            if (message.Parent != null)
            {
                var viewModel = new GallerySecretViewModel(message.Parent.ToInputPeer(), message, bubble.ContextBase.ProtoService, bubble.ContextBase.CacheService, bubble.ContextBase.Aggregator);
                await GallerySecretView.Current.ShowAsync(viewModel, () => media);
            }
        }