예제 #1
0
        private void OnOpenAttachment(object sender, GestureEventArgs e)
        {
            var          element = (FrameworkElement)sender;
            MessageModel message = (MessageModel)element.DataContext;

            if (!(message is MessageModelDelivered))
            {
                return;
            }

            MessageMedia media = ((MessageModelDelivered)message).MessageMedia;

            MediaTransitionHelper.Instance.Media = media;

            if (media.Constructor == Constructor.messageMediaPhoto ||
                media.Constructor == Constructor.messageMediaVideo)
            {
                NavigationService.Navigate(new Uri("/UI/Pages/MediaViewPage.xaml", UriKind.Relative));
            }
            else if (media.Constructor == Constructor.messageMediaGeo)
            {
                MediaTransitionHelper.Instance.From = message.Sender;

                NavigationService.Navigate(new Uri("/UI/Pages/MapViewPage.xaml?mode=view", UriKind.Relative));
            }
        }
예제 #2
0
        private void OnContactTap(object sender, GestureEventArgs e)
        {
            var          element = (FrameworkElement)sender;
            MessageModel message = (MessageModel)element.DataContext;

            if (!(message is MessageModelDelivered))
            {
                return;
            }

            MessageModelDelivered messageDelivered = (MessageModelDelivered)message;
            MessageMedia          media            = messageDelivered.MessageMedia;

            if (media.Constructor != Constructor.messageMediaContact)
            {
                return;
            }

            MessageMediaContactConstructor mediaContact = (MessageMediaContactConstructor)media;

            SaveContactTask saveContactTask = new SaveContactTask();

            saveContactTask.Completed += new EventHandler <SaveContactResult>(saveContactTask_Completed);

            saveContactTask.FirstName   = mediaContact.first_name;
            saveContactTask.LastName    = mediaContact.last_name;
            saveContactTask.MobilePhone = "+" + mediaContact.phone_number;

            saveContactTask.Show();
        }
        public TgMedia Map(MessageMedia media)
        {
            var photo = (media as MessageMediaPhotoConstructor)?.photo;

            var photoConstructor = photo as PhotoConstructor;

            return(photoConstructor == null ? null : MapInternal(photoConstructor));
        }
예제 #4
0
        public TgMedia Map(MessageMedia media)
        {
            var audio = (media as MessageMediaAudioConstructor)?.audio;

            var audioConstructor = audio as AudioConstructor;

            return(audioConstructor == null ? null : MapInternal(audioConstructor));
        }
예제 #5
0
        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;
            }
        }
예제 #6
0
 public GeoChatMessageConstructor(int chat_id, int id, int from_id, int date, string message, MessageMedia media)
 {
     this.chat_id = chat_id;
     this.id      = id;
     this.from_id = from_id;
     this.date    = date;
     this.message = message;
     this.media   = media;
 }
예제 #7
0
 public override void Read(BinaryReader reader)
 {
     this.chat_id = reader.ReadInt32();
     this.id      = reader.ReadInt32();
     this.from_id = reader.ReadInt32();
     this.date    = reader.ReadInt32();
     this.message = Serializers.String.read(reader);
     this.media   = Tl.Parse <MessageMedia>(reader);
 }
예제 #8
0
        private static MessageMedia Parse(TMessageMediaContact messageMediaContact)
        {
            var media = new MessageMedia()
            {
                Type = TelegramMediaType.MediaContact
            };

            media.Attibutes.Add(new DocumentAttribute(nameof(messageMediaContact.FirstName), messageMediaContact.FirstName));
            media.Attibutes.Add(new DocumentAttribute(nameof(messageMediaContact.PhoneNumber), messageMediaContact.PhoneNumber));
            return(media);
        }
예제 #9
0
        private static MessageMedia Parse(TMessageMediaGeo messageMediaGeo)
        {
            var point = messageMediaGeo.Geo.As <TGeoPoint>();
            var media = new MessageMedia()
            {
                Type = TelegramMediaType.Geo
            };

            media.Attibutes.Add(new DocumentAttribute("Lat", point.Lat.ToString()));
            media.Attibutes.Add(new DocumentAttribute("Long", point.Long.ToString()));
            return(media);
        }
예제 #10
0
 public override void Read(BinaryReader reader)
 {
     this.id          = reader.ReadInt32();
     this.fwd_from_id = reader.ReadInt32();
     this.fwd_date    = reader.ReadInt32();
     this.from_id     = reader.ReadInt32();
     this.to_id       = reader.ReadInt32();
     this.output      = reader.ReadUInt32() == 0x997275b5;
     this.unread      = reader.ReadUInt32() == 0x997275b5;
     this.date        = reader.ReadInt32();
     this.message     = Serializers.String.read(reader);
     this.media       = Tl.Parse <MessageMedia>(reader);
 }
예제 #11
0
 public MessageForwardedConstructor(int id, int fwd_from_id, int fwd_date, int from_id, int to_id, bool output,
                                    bool unread, int date, string message, MessageMedia media)
 {
     this.id          = id;
     this.fwd_from_id = fwd_from_id;
     this.fwd_date    = fwd_date;
     this.from_id     = from_id;
     this.to_id       = to_id;
     this.output      = output;
     this.unread      = unread;
     this.date        = date;
     this.message     = message;
     this.media       = media;
 }
예제 #12
0
        internal static string Combine(string message, MessageMedia media)
        {
            string s = message;

            if (media != null && media.Constructor != Constructor.messageMediaEmpty)
            {
                if (!String.IsNullOrEmpty(s))
                {
                    s += " ";
                }
                s += '<' + media.Constructor.ToString() + '>';
            }
            return(s);
        }
예제 #13
0
        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;
            }

        }
예제 #14
0
        public async Task <IActionResult> Send(UserStatus[] status, string role, MessageMedia media, string subject, string messageBody, string smsBody)
        {
            var usersToReceiveMessage = userManager.Users.Where(user => status.Contains(user.Status)).ToHashSet();

            if (!String.IsNullOrEmpty(role))
            {
                usersToReceiveMessage.UnionWith(await userManager.GetUsersInRoleAsync(role));
            }
            if (media == MessageMedia.SMS || media == MessageMedia.EmailSMS)
            {
                var userPhonenumbers = usersToReceiveMessage.Where(user => !string.IsNullOrEmpty(user?.PhoneNumber)).Select(user => user.PhoneNumber).ToArray();
                var result           = await smsSender.SendSmsAsync(smsBody, userPhonenumbers);
            }
            if (media == MessageMedia.Email || media == MessageMedia.EmailSMS)
            {
                var mails = usersToReceiveMessage.Where(user => !string.IsNullOrEmpty(user?.Email)).Select(user => user.Email).ToArray();
                await emailSender.SendEmailAsync(string.Join(";", mails), subject, messageBody);
            }
            return(RedirectToAction(nameof(Index)));
        }
예제 #15
0
        public MapViewPage()
        {
            InitializeComponent();

            myPositionLayer.Add(myMapOverlay);
            Map.Layers.Add(myPositionLayer);
            ZoomLevel     = 16;
            Map.ZoomLevel = ZoomLevel;

            GetMyMapLocationAsync();

            DataContext = MediaTransitionHelper.Instance.From;

            MessageMedia media = MediaTransitionHelper.Instance.Media;
            MessageMediaGeoConstructor geoMedia = (MessageMediaGeoConstructor)media;

            point = (GeoPointConstructor)geoMedia.geo;

            userGeoCoordinate = new GeoCoordinate(point.lat, point.lng);
            AddPushpin(userGeoCoordinate, MediaTransitionHelper.Instance.From.FullName);

            CalculateDistanceBetweenMeAndUser();
            UserInfoClick(this, null);
        }
예제 #16
0
        private static MessageMedia Parse(TMessageMediaDocument messageMediaDocument)
        {
            var document = messageMediaDocument.Document.As <TDocument>();

            var messageMedia = new MessageMedia()
            {
                Files = new List <File>()
                {
                    new File()
                    {
                        Size = document.Size,
                        //Location = new TInputDocumentFileLocation()
                        //{
                        //    Id = document.Id,
                        //    AccessHash = document.AccessHash,
                        //}
                    }
                },
                Type = TelegramMediaType.Document
            };

            messageMedia.Attibutes = document.Attributes.ForEach(attribute => { return(DocumentAttributeParser.Parse(attribute)); }).SelectMany(list => list).ToList();
            return(messageMedia);
        }
예제 #17
0
 public TgMedia Map(MessageMedia media) => null;
예제 #18
0
        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));
        }