protected override void OnNavigatedTo(NavigationEventArgs e) { base.OnNavigatedTo(e); string uriParam = ""; if (NavigationContext.QueryString.TryGetValue("modelId", out uriParam)) { dialogToReturn = TelegramSession.Instance.Dialogs.Model.Dialogs[(int.Parse(uriParam))]; } }
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)); }
public void ProcessNewMessage(Message message) { logger.info("process new message: {0}", message); MessageModelDelivered messageModel = new MessageModelDelivered(message); Peer targetPeer = messageModel.Peer; DialogModel targetDialogModel = null; foreach (DialogModel dialogModel in dialogs) { if (!dialogModel.IsEncrypted && TLStuff.PeerEquals(dialogModel.Peer, targetPeer)) { targetDialogModel = dialogModel; break; } } if (targetDialogModel == null) { logger.info("target dialog not found, creating new..."); targetDialogModel = new DialogModelPlain(messageModel, session); dialogs.Insert(0, targetDialogModel); } else { logger.info("target dialog found, rearrange..."); UpDialog(targetDialogModel); } targetDialogModel.ProcessNewMessage(messageModel); if (targetDialogModel == TelegramSession.Instance.Dialogs.OpenedDialog) { targetDialogModel.OpenedRead(); } }
private void OnDialogSelected(object sender, DialogModel model) { int modelId = TelegramSession.Instance.Dialogs.Model.Dialogs.IndexOf(model); NavigationService.Navigate(new Uri("/UI/Pages/DialogPage.xaml?modelId=" + modelId, UriKind.Relative)); }
public void UpDialog(DialogModel dialog) { dialogs.Remove(dialog); dialogs.Insert(0, dialog); }
public DialogPage() { session = TelegramSession.Instance; model = TelegramSession.Instance.Dialogs.OpenedDialog; InitializeComponent(); UpdateDataContext(); DisableEditBox(); messageEditor.GotFocus += delegate { AttachPopup.IsOpen = false; EmojiPopup.IsOpen = false; }; messageEditor.LostFocus += delegate { if (!EmojiPopup.IsOpen && !AttachPopup.IsOpen) MainPanel.Margin = new Thickness(0, 0, 0, 0); }; timer = new DispatcherTimer(); timer.Interval = TimeSpan.FromSeconds(1); timer.Tick += TimerOnTick; messageEditor.TextChanged += MessageEditorOnTextChanged; EmojiPanelControl.BackspaceClick += EmojiPanelControlOnBackspaceClick; EmojiPanelControl.KeyboardClick += EmojiPanelControlOnKeyboardClick; EmojiPanelControl.EmojiGridListSelector.SelectionChanged += EmojiGridListSelectorOnSelectionChanged; }
protected virtual void OnSelected(DialogModel model) { OnDialogSelected handler = DialogSelected; if (handler != null) handler(this, model); }