예제 #1
0
        public void Remove(TLStickerSet set)
        {
            if (set == null)
            {
                return;
            }
            var inputSet = new TLInputStickerSetId {
                Id = set.Id, AccessHash = set.AccessHash
            };

            IsWorking = true;
            MTProtoService.UninstallStickerSetAsync(inputSet,
                                                    result => Execute.BeginOnUIThread(() =>
            {
                IsWorking = false;
                Items.Remove(set);
                var emojiControl = EmojiControl.GetInstance();
                emojiControl.RemoveStickerSet(inputSet);
            }),
                                                    error => Execute.BeginOnUIThread(() =>
            {
                IsWorking = false;
                Execute.ShowDebugMessage("messages.uninstallStickerSet error " + error);
            }));
        }
예제 #2
0
        private void OnSmileIconClick(object sender, EventArgs e)
        {
            if (EmojiInstance == null)
            {
                // Initialize EmojiControl
                EmojiInstance = EmojiControl.GetInstance();
                EmojiInstance.BindTextBox(InputTextBox);

                ContentPanel.Children.Add(EmojiInstance); // Add to view
            }

            EmojiInstance.IsOpen = !EmojiInstance.IsOpen;
        }
예제 #3
0
        public static void NavigateToStickers(IMTProtoService mtProtoService, IStateService stateService, TLInputStickerSetBase inputStickerSet)
        {
#if WP8
            if (mtProtoService != null)
            {
                Execute.BeginOnUIThread(() =>
                {
                    var frame = Application.Current.RootVisual as TelegramTransitionFrame;
                    if (frame != null)
                    {
                        frame.OpenBlockingProgress();
                    }

                    stateService.GetAllStickersAsync(cachedStickers =>
                    {
                        mtProtoService.GetStickerSetAsync(inputStickerSet,
                                                          stickerSet => Execute.BeginOnUIThread(() =>
                        {
                            if (frame != null)
                            {
                                frame.CloseBlockingProgress();
                            }

                            var emoticons = new Dictionary <long, string>();
                            for (var i = 0; i < stickerSet.Packs.Count; i++)
                            {
                                var emoticon = stickerSet.Packs[i].Emoticon.ToString();
                                foreach (var document in stickerSet.Packs[i].Documents)
                                {
                                    emoticons[document.Value] = emoticon;
                                }
                            }

                            stickerSet.Set.Stickers = new TLVector <TLObject>();
                            for (var i = 0; i < stickerSet.Documents.Count; i++)
                            {
                                var document22 = stickerSet.Documents[i] as TLDocument22;
                                if (document22 != null)
                                {
                                    string emoticon;
                                    if (emoticons.TryGetValue(document22.Id.Value, out emoticon))
                                    {
                                        document22.Emoticon = emoticon;
                                    }

                                    stickerSet.Set.Stickers.Add(new TLStickerItem {
                                        Document = document22
                                    });
                                }
                            }

                            var isCancelVisible = true;
                            var allStickers29   = cachedStickers as TLAllStickers29;
                            if (allStickers29 != null)
                            {
                                isCancelVisible = allStickers29.Sets.FirstOrDefault(x => x.Id.Value == stickerSet.Set.Id.Value) == null;
                            }

                            ShowMessagePrompt(isCancelVisible, stickerSet.Set, prompt =>
                            {
                                if (prompt == PopUpResult.Ok && isCancelVisible)
                                {
                                    mtProtoService.InstallStickerSetAsync(inputStickerSet,
                                                                          result => Execute.BeginOnUIThread(() =>
                                    {
                                        var instance = EmojiControl.GetInstance();
                                        instance.AddStickerSet(stickerSet);

                                        mtProtoService.SetMessageOnTime(2.0, AppResources.NewStickersAdded);
                                    }),
                                                                          error => Execute.BeginOnUIThread(() =>
                                    {
                                        if (error.CodeEquals(ErrorCode.BAD_REQUEST))
                                        {
                                            if (error.TypeEquals(ErrorType.STICKERSET_INVALID))
                                            {
                                                MessageBox.Show(AppResources.StickersNotFound, AppResources.Error, MessageBoxButton.OK);
                                            }
                                            else
                                            {
                                                Execute.ShowDebugMessage("messages.importChatInvite error " + error);
                                            }
                                        }
                                        else
                                        {
                                            Execute.ShowDebugMessage("messages.importChatInvite error " + error);
                                        }
                                    }));
                                }
                            });
                        }),
                                                          error => Execute.BeginOnUIThread(() =>
                        {
                            if (frame != null)
                            {
                                frame.CloseBlockingProgress();
                            }
                            if (error.CodeEquals(ErrorCode.BAD_REQUEST))
                            {
                                if (error.TypeEquals(ErrorType.STICKERSET_INVALID))
                                {
                                    MessageBox.Show(AppResources.StickersNotFound, AppResources.Error, MessageBoxButton.OK);
                                }
                                else
                                {
                                    Execute.ShowDebugMessage("messages.getStickerSet error " + error);
                                }
                            }
                            else
                            {
                                Execute.ShowDebugMessage("messages.getStickerSet error " + error);
                            }
                        }));
                    });
                });
            }
#endif
        }
        public SecretDialogDetailsView()
        {
            _timer = System.Diagnostics.Stopwatch.StartNew();

            InitializeComponent();

            _sendButton.Click   += (sender, args) => ViewModel.Send();
            _attachButton.Click += (sender, args) =>
            {
                EmojiPlaceholder.Visibility = Visibility.Collapsed;
                Self.Focus();
                ViewModel.Attach();
            };
            _manageButton.Click += (sender, args) => SwitchToSelectionMode();
            _deleteButton.Click += (sender, args) =>
            {
                ViewModel.DeleteMessages();
                SwitchToNormalMode();
            };
            _smileButton.Click += (sender, args) =>
            {
                if (_emojiKeyboard == null)
                {
                    _emojiKeyboard = EmojiControl.GetInstance();

                    _emojiKeyboard.BindTextBox(InputMessage);
                    EmojiPlaceholder.Content = _emojiKeyboard;
                    _emojiKeyboard.IsOpen    = true;
                }

                if (EmojiPlaceholder.Visibility == Visibility.Visible)
                {
                    if (InputMessage == FocusManager.GetFocusedElement())
                    {
                        _smileButtonPressed = true;
                        Items.Focus();

                        EmojiPlaceholder.Opacity = 1.0;
                        EmojiPlaceholder.Height  = EmojiControl.PortraitOrientationHeight;
                    }
                    else
                    {
                        EmojiPlaceholder.Visibility = Visibility.Collapsed;
                    }
                }
                else
                {
                    var awaitKeyboardDown = false;
                    if (InputMessage == FocusManager.GetFocusedElement())
                    {
                        awaitKeyboardDown = true;
                        Items.Focus();
                    }

                    ThreadPool.QueueUserWorkItem(state =>
                    {
                        if (awaitKeyboardDown)
                        {
                            Thread.Sleep(400);
                        }
                        Deployment.Current.Dispatcher.BeginInvoke(() =>
                        {
                            EmojiPlaceholder.Visibility = Visibility.Visible;
                        });
                    });
                }
            };

            Loaded   += OnLoaded;
            Unloaded += OnUnloaded;
        }
예제 #5
0
        public SecretDialogDetailsView()
        {
            _timer = System.Diagnostics.Stopwatch.StartNew();

            InitializeComponent();

            //Full HD
            OptimizeFullHD();

            _sendButton.Click   += (sender, args) => ViewModel.Send();
            _attachButton.Click += (sender, args) =>
            {
                EmojiPlaceholder.Visibility = Visibility.Collapsed;
                AudioRecorder.Visibility    = GetAudioRecorderVisibility(); //Visibility.Visible;
                Title.Visibility            = Visibility.Visible;
                DialogPhoto.Visibility      = Visibility.Visible;

                Self.Focus();
                ViewModel.Attach();
            };
            _manageButton.Click += (sender, args) => SwitchToSelectionMode();
            _deleteButton.Click += (sender, args) =>
            {
                ViewModel.DeleteMessages();
                SwitchToNormalMode();
            };
            _smileButton.Click += (sender, args) =>
            {
                if (_emojiKeyboard == null)
                {
                    _emojiKeyboard = EmojiControl.GetInstance();

                    _emojiKeyboard.BindTextBox(InputMessage, true);
                    _emojiKeyboard.StickerSelected += OnStickerSelected;
                    EmojiPlaceholder.Content        = _emojiKeyboard;
                    _emojiKeyboard.IsOpen           = true;
                }

                if (EmojiPlaceholder.Visibility == Visibility.Visible)
                {
                    if (InputMessage == FocusManager.GetFocusedElement())
                    {
                        Items.Focus();
                        _smileButtonPressed      = true;
                        EmojiPlaceholder.Opacity = 1.0;
                        EmojiPlaceholder.Height  = EmojiControl.PortraitOrientationHeight;
                    }
                    else
                    {
                        EmojiPlaceholder.Visibility = Visibility.Collapsed;
                        AudioRecorder.Visibility    = GetAudioRecorderVisibility(); //Visibility.Visible;
                        Title.Visibility            = Visibility.Visible;
                        DialogPhoto.Visibility      = Visibility.Visible;
                    }
                }
                else
                {
                    var awaitKeyboardDown = false;
                    if (InputMessage == FocusManager.GetFocusedElement())
                    {
                        awaitKeyboardDown = true;
                        Items.Focus();
                    }

                    Telegram.Api.Helpers.Execute.BeginOnThreadPool(() =>
                    {
                        if (awaitKeyboardDown)
                        {
                            Thread.Sleep(400);
                        }
                        Telegram.Api.Helpers.Execute.BeginOnUIThread(() =>
                        {
                            EmojiPlaceholder.Visibility = Visibility.Visible;
                            AudioRecorder.Visibility    = Visibility.Collapsed;
                            Title.Visibility            = Visibility.Collapsed;
                            DialogPhoto.Visibility      = Visibility.Collapsed;
                        });
                    });
                }
            };

            Loaded   += OnLoaded;
            Unloaded += OnUnloaded;
        }
        public DialogDetailsView()
        {
            InitializeComponent();

            AnimationContext = LayoutRoot;

            _sendButton.Click   += (sender, args) => ViewModel.Send();
            _attachButton.Click += (sender, args) =>
            {
                EmojiPlaceholder.Visibility = Visibility.Collapsed;
                //DialogPhoto.Visibility = Visibility.Visible;
                //Title.Visibility = Visibility.Visible;

                ChooseAttachment.Focus();
                ViewModel.Attach();
            };
            _smileButton.Click += (sender, args) =>
            {
                if (_emojiKeyboard == null)
                {
                    _emojiKeyboard = EmojiControl.GetInstance();

                    _emojiKeyboard.BindTextBox(InputMessage);
                    EmojiPlaceholder.Content = _emojiKeyboard;
                    _emojiKeyboard.IsOpen    = true;
                }

                if (EmojiPlaceholder.Visibility == Visibility.Visible)
                {
                    if (InputMessage == FocusManager.GetFocusedElement())
                    {
                        _smileButtonPressed = true;

                        EmojiPlaceholder.Opacity = 1.0;
                        EmojiPlaceholder.Height  = EmojiControl.PortraitOrientationHeight;
                        Items.Focus();
                    }
                    else
                    {
                        EmojiPlaceholder.Visibility = Visibility.Collapsed;
                        //DialogPhoto.Visibility = Visibility.Visible;
                        //Title.Visibility = Visibility.Visible;
                    }
                }
                else
                {
                    var awaitKeyboardDown = false;
                    if (InputMessage == FocusManager.GetFocusedElement())
                    {
                        awaitKeyboardDown = true;
                        Items.Focus();
                    }

                    ThreadPool.QueueUserWorkItem(state =>
                    {
                        if (awaitKeyboardDown)
                        {
                            Thread.Sleep(400);
                        }
                        Deployment.Current.Dispatcher.BeginInvoke(() =>
                        {
                            EmojiPlaceholder.Opacity    = 1.0;
                            EmojiPlaceholder.Visibility = Visibility.Visible;
                            //DialogPhoto.Visibility = Visibility.Collapsed;
                            //Title.Visibility = Visibility.Collapsed;
                        });
                    });
                }
            };
            _manageButton.Click  += (sender, args) => SwitchToSelectionMode();
            _forwardButton.Click += (sender, args) =>
            {
                var selectedItems = ViewModel.Items.Where(x => x.Id != null && x.IsSelected).ToList();
                if (selectedItems.Count == 0)
                {
                    return;
                }

                ViewModel.IsSelectionEnabled = false;

                Deployment.Current.Dispatcher.BeginInvoke(() =>
                {
                    try
                    {
                        if (Items.Visibility == Visibility.Visible)
                        {
                            var writeableBitmap   = new WriteableBitmap(Items, null);
                            ViewModel.With.Bitmap = writeableBitmap;
                        }
                    }
                    catch (Exception ex)
                    {
                        Telegram.Api.Helpers.Execute.ShowDebugMessage("WritableBitmap exception " + ex);
                    }

                    ViewModel.ForwardMessages(selectedItems);
                });
            };
            _deleteButton.Click += (sender, args) => ViewModel.DeleteMessages();

            Loaded += (sender, args) =>
            {
                SetRootFrameBinding();

                if (!ViewModel.StateService.IsEmptyBackground)
                {
                    var color = Colors.White;
                    color.A = 254;
                    SystemTray.ForegroundColor = color;
                }

                if (ViewModel.StateService.CurrentBackground != null)
                {
                    var color = Colors.White;
                    color.A = 254;
                    SystemTray.ForegroundColor = color;
                }

                if (ViewModel.With is TLBroadcastChat)
                {
                    _forwardButton.IsEnabled = false;
                }

                ThreadPool.QueueUserWorkItem(state =>
                {
                    Thread.Sleep(300);

                    Deployment.Current.Dispatcher.BeginInvoke(() =>
                    {
                        if (ViewModel.StateService.FocusOnInputMessage)
                        {
                            ViewModel.StateService.FocusOnInputMessage = false;
                            InputMessage.Focus();
                        }
                    });
                });
                if (ViewModel.ChooseAttachment != null)
                {
                    ViewModel.ChooseAttachment.PropertyChanged += OnChooseAttachmentPropertyChanged;
                }
                if (ViewModel.ImageViewer != null)
                {
                    ViewModel.ImageViewer.PropertyChanged += OnImageViewerPropertyChanged;
                }
                if (ViewModel.ImageEditor != null)
                {
                    ViewModel.ImageEditor.PropertyChanged += OnImageEditorPropertyChanged;
                }
                ViewModel.PropertyChanged += OnViewModelPropertyChanged;
                ViewModel.ScrollToBottom  += OnViewModelScrollToBottom;

                BuildLocalizedAppBar();
                //MessageBox.Show("Time: " + timer.Elapsed);
            };

            Unloaded += (sender, args) =>
            {
                RemoveRootFrameBinding();

                if (ViewModel.ChooseAttachment != null)
                {
                    ViewModel.ChooseAttachment.PropertyChanged -= OnChooseAttachmentPropertyChanged;
                }
                if (ViewModel.ImageViewer != null)
                {
                    ViewModel.ImageViewer.PropertyChanged -= OnImageViewerPropertyChanged;
                }
                if (ViewModel.ImageEditor != null)
                {
                    ViewModel.ImageEditor.PropertyChanged -= OnImageEditorPropertyChanged;
                }
                ViewModel.ScrollToBottom  -= OnViewModelScrollToBottom;
                ViewModel.PropertyChanged -= OnViewModelPropertyChanged;
            };
        }