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(); }
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); }); } }
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>(); } }
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; }
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); }); }
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); } }
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); }