Пример #1
0
        public StickersControl(TLAllStickers masks, TLAllStickers stickers)
        {
            InitializeComponent();

            LayoutRoot.Opacity = 0.0;

            VirtPanel.InitializeWithScrollViewer(CSV);

            Loaded += OnLoaded;

            _masks    = masks;
            _stickers = stickers;

            if (_masks == null)
            {
                LoadMasksAsync();
            }

            if (_stickers == null)
            {
                LoadStickersAsync();
            }

            LoadButtons();
            CreateSetsAndUpdatePanel();
        }
Пример #2
0
        private void Touch_FrameReported(object sender, TouchFrameEventArgs e)
        {
            if (_manipulationStartedArgs == null)
            {
                Touch.FrameReported -= Touch_FrameReported;
                return;
            }

            var point = e.GetPrimaryTouchPoint(null);

            if (point.Action == TouchAction.Up)
            {
                Touch.FrameReported -= Touch_FrameReported;
                return;
            }

            var manipulationPoint = e.GetPrimaryTouchPoint(_manipulationStartedArgs.ManipulationContainer);
            var length            = Math.Pow(manipulationPoint.Position.X - _manipulationStartedArgs.ManipulationOrigin.X, 2.0)
                                    + Math.Pow(manipulationPoint.Position.Y - _manipulationStartedArgs.ManipulationOrigin.Y, 2.0);

            if (length > 30.0 * 30.0)
            {
                Touch.FrameReported -= Touch_FrameReported;
                return;
            }

            if (_startTime.HasValue && _startTime.Value.AddSeconds(0.5) <= DateTime.Now)
            {
                Touch.FrameReported -= Touch_FrameReported;
                VirtPanel.DisableVerticalScrolling();

                _loadedStoryboard = EmojiControl.GetScaleStoryboard(_fromItem, 0.85, 1.0);

                Preview.Visibility = Visibility.Visible;
                var stickerImage = _fromItem as Image;
                if (stickerImage != null)
                {
                    PreviewImage.Source = stickerImage.Source;

                    var stickerItem = stickerImage.DataContext as TLStickerItem;
                    if (stickerItem != null)
                    {
                        Image.DataContext = stickerItem;
                    }
                }

                var grid = Preview;
                grid.Children.Remove(PreviewGrid);

                Execute.BeginOnUIThread(() =>
                {
                    PreviewGrid.RenderTransform = new CompositeTransform();
                    PreviewGrid.Opacity         = 0.0;
                    grid.Children.Add(PreviewGrid);
                });
            }
        }
Пример #3
0
        private void RecentMasksButtonOnClick(object sender, RoutedEventArgs e)
        {
            SetButtonsBackground(sender);

            List <TLDocument22> stickerSet;

            if (_stickerSets != null && _stickerSets.TryGetValue(RecentlyUsedMasksKey, out stickerSet))
            {
                LoadStickerSet(RecentlyUsedMasksKey, stickerSet);
            }
            else
            {
                VirtPanel.ClearItems();
                _recentStickersSprites = new List <VListItemBase>();
            }
        }
Пример #4
0
        public EmojiControl()
        {
            InitializeComponent();

            //var frame = (Frame)Application.Current.RootVisual;
            //_frameTransform = ((TranslateTransform)((TransformGroup)frame.RenderTransform).Children[0]);
            //var binding = new Binding("Y")
            //{
            //    Source = _frameTransform
            //};
            //SetBinding(RootFrameTransformProperty, binding);

            VirtPanel.InitializeWithScrollViewer(CSV);
            VirtPanel.ScrollPositionChanged += VirtPanelOnScrollPositionChanged;
            //SizeChanged += OnSizeChanged;
            OnSizeChanged(null, null);

            LoadButtons();
            CurrentCategory = 0;
        }
Пример #5
0
        private void AddSprites(List <VListItemBase> sprites)
        {
            var firstSlice  = new List <VListItemBase>();
            var secondSlice = new List <VListItemBase>();

            for (var i = 0; i < sprites.Count; i++)
            {
                if (i < FirstStickerSliceCount)
                {
                    firstSlice.Add(sprites[i]);
                }
                else
                {
                    secondSlice.Add(sprites[i]);
                }
            }

            VirtPanel.ClearItems();
            VirtPanel.AddItems(firstSlice);
            Execute.BeginOnUIThread(TimeSpan.FromSeconds(0.1), () => { VirtPanel.AddItems(secondSlice); });
        }
Пример #6
0
        private void StickerPanel_ManipulationCompleted(object sender, ManipulationCompletedEventArgs e)
        {
            var fromItem = _fromItem;

            _startTime = null;
            _fromItem  = null;

            if (_storyboard != null)
            {
                _storyboard.SkipToFill();
            }

            VirtPanel.EnableVerticalScrolling();
            Preview.Visibility = Visibility.Collapsed;

            var st = EmojiControl.GetScaleStoryboard(_lastMouseEnter ?? fromItem, 1.0, 1.0);

            if (st != null)
            {
                Execute.BeginOnUIThread(st.Begin);
            }
        }
Пример #7
0
        public async void LoadCategory(int index)
        {
            VirtPanel.ClearItems();

            if (_currentCategory == RecentsCategoryIndex)
            {
                UnloadRecents();
            }

            if (index == RecentsCategoryIndex)
            {
                LoadRecents();
                return;
            }

            List <VListItemBase> sprites = null;

            switch (index)
            {
            case 0:
                sprites = _category1Sprites;
                break;

            case 1:
                sprites = _category2Sprites;
                break;

            case 2:
                sprites = _category3Sprites;
                break;

            case 3:
                sprites = _category4Sprites;
                break;

            case 4:
                sprites = _category5Sprites;
                break;
            }

            if (sprites == null)
            {
                sprites = new List <VListItemBase>();

                for (var i = 0; i < EmojiData.SpritesByCategory[index].Length; i++)
                {
                    //var item = new EmojiSpriteItem(index, i);
                    var item = new EmojiSpriteItem(EmojiData.SpritesByCategory[index][i], index, i);
                    item.EmojiSelected += OnEmojiSelected;
                    sprites.Add(item);
                }

                switch (index)
                {
                case 0:
                    _category1Sprites = sprites;
                    break;

                case 1:
                    _category2Sprites = sprites;
                    break;

                case 2:
                    _category3Sprites = sprites;
                    break;

                case 3:
                    _category4Sprites = sprites;
                    break;

                case 4:
                    _category5Sprites = sprites;
                    break;
                }
            }

            CurrentCategory = index;

            VirtPanel.AddItems(new List <VListItemBase> {
                sprites[0]
            });
            CreateButtonsBackgrounds(index);

            if (!_wasRendered)
            {
                // Display LoadingProgressBar only once
                LoadingProgressBar.Visibility = Visibility.Collapsed;
                _wasRendered = true;
            }

            // Delayed rendering of the rest parts - speeds up initial load
            await Task.Delay(100);

            if (_currentCategory != index)
            {
                return;
            }

            var listList = sprites.ToList();

            listList.RemoveAt(0);
            VirtPanel.AddItems(listList);
        }