public PinchAndZoom() { InitializeComponent(); media = MediaTransitionHelper.Instance.Media; if (media.Constructor == Constructor.messageMediaPhoto) { ImageViewportElement.Visibility = Visibility.Visible; PlaybackControls.Visibility = Visibility.Collapsed; MessageMediaPhotoConstructor cons = (MessageMediaPhotoConstructor)media; if (cons.photo.Constructor == Constructor.photoEmpty) { } else if (cons.photo.Constructor == Constructor.photo) { PhotoConstructor photoConstructor = (PhotoConstructor)cons.photo; author = TelegramSession.Instance.GetUser(photoConstructor.user_id); MetaInfoAuthor.Text = author.FullName; MetaInfoDate.Text = Formatters.FormatDialogDateTimestampUnix(photoConstructor.date); } DoLoadPhoto(); return; } else if (media.Constructor == Constructor.messageMediaVideo) { ImageViewportElement.Visibility = Visibility.Collapsed; PlaybackControls.Visibility = Visibility.Visible; VideoPlayerElement.Visibility = Visibility.Visible; PlaybackButton.Visibility = Visibility.Visible; MessageMediaVideoConstructor cons = (MessageMediaVideoConstructor)media; if (cons.video.Constructor == Constructor.videoEmpty) { } else if (cons.video.Constructor == Constructor.video) { VideoConstructor videoConstructor = (VideoConstructor)cons.video; author = TelegramSession.Instance.GetUser(videoConstructor.user_id); MetaInfoAuthor.Text = author.FullName; MetaInfoDate.Text = Formatters.FormatDialogDateTimestampUnix(videoConstructor.date); } VideoPlayerElement.MediaEnded += delegate { PlaybackButton.Visibility = Visibility.Visible; }; } else { return; } }
private void OnDownloadOrPlayClick(object sender, RoutedEventArgs e) { if (media == null) { return; } if (!downloaded) { PlaybackButton.IsEnabled = false; PlaybackButton.Content = "downloading..."; MessageMediaVideoConstructor mediaVideo = (MessageMediaVideoConstructor)media; Task.Run(() => TelegramSession.Instance.Files.DownloadVideo(mediaVideo.video, Handler)).ContinueWith( (result) => { Deployment.Current.Dispatcher.BeginInvoke(() => { videoSource = result.Result; PlaybackButton.Content = "play"; PlaybackButton.IsEnabled = true; PlaybackProgress.Visibility = Visibility.Collapsed; downloaded = true; }); }); } else { PlaybackButton.Visibility = Visibility.Collapsed; if (videoSource == null) { return; } using (var isf = IsolatedStorageFile.GetUserStoreForApplication()) { using (var isfs = new IsolatedStorageFileStream(videoSource, FileMode.Open, FileAccess.Read, FileShare.Read, isf)) { VideoPlayerElement.SetSource(isfs); VideoPlayerElement.Play(); } } } }
private void OnDialogSelected(object sender, DialogModel model) { InputPeer inputPeer = null; if (!(model is DialogModelPlain)) { return; } DialogModelPlain dmp = (DialogModelPlain)model; if (fromMedia == 1) { MessageMedia media = MediaTransitionHelper.Instance.Media; InputMedia im = null; if (media.Constructor == Constructor.messageMediaPhoto) { MessageMediaPhotoConstructor mmpc = (MessageMediaPhotoConstructor)media; InputPhoto ip = TL.inputPhoto(((PhotoConstructor)mmpc.photo).id, ((PhotoConstructor)mmpc.photo).access_hash); im = TL.inputMediaPhoto(ip); } else if (media.Constructor == Constructor.messageMediaVideo) { MessageMediaVideoConstructor mmvc = (MessageMediaVideoConstructor)media; InputVideo iv = TL.inputVideo(((VideoConstructor)mmvc.video).id, ((VideoConstructor)mmvc.video).access_hash); im = TL.inputMediaVideo(iv); } else if (media.Constructor == Constructor.messageMediaGeo) { MessageMediaGeoConstructor mmgc = (MessageMediaGeoConstructor)media; GeoPointConstructor gpc = (GeoPointConstructor)mmgc.geo; InputGeoPoint point = TL.inputGeoPoint(gpc.lat, gpc.lng); im = TL.inputMediaGeoPoint(point); } if (im != null) { dmp.SendMedia(im); NavigationService.GoBack(); } return; } if (messageId.Count == 0) { logger.error("error forwarding, no messageId"); } Peer peer = model.Peer; if (model.IsChat) { inputPeer = TL.inputPeerChat(((PeerChatConstructor)peer).chat_id); } else { inputPeer = TL.inputPeerContact(((PeerUserConstructor)peer).user_id); } DoForwardMessages(inputPeer); int modelId = TelegramSession.Instance.Dialogs.Model.Dialogs.IndexOf(model); NavigationService.Navigate(new Uri("/UI/Pages/DialogPage.xaml?modelId=" + modelId, UriKind.Relative)); }