Inheritance: INotifyPropertyChanged
コード例 #1
0
        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))];
            } 
        }
コード例 #2
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));
        }
コード例 #3
0
ファイル: DialogListModel.cs プロジェクト: mtm9999/kilogram
        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();
            }
        }
コード例 #4
0
 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));
 }
コード例 #5
0
ファイル: DialogListModel.cs プロジェクト: mtm9999/kilogram
 public void UpDialog(DialogModel dialog)
 {
     dialogs.Remove(dialog);
     dialogs.Insert(0, dialog);
 }
コード例 #6
0
        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;

        }
コード例 #7
0
 public void UpDialog(DialogModel dialog) {
     dialogs.Remove(dialog);
     dialogs.Insert(0, dialog);
 }
コード例 #8
0
 protected virtual void OnSelected(DialogModel model) {
     OnDialogSelected handler = DialogSelected;
     if (handler != null) handler(this, model);
 }