private static List <StickerSpriteItem> CreateStickerSetSprites(TLStickerSet stickerSet)
        {
            if (stickerSet == null)
            {
                return(null);
            }

            const int stickersPerRow = 4;
            var       sprites        = new List <StickerSpriteItem>();
            var       stickers       = new List <TLStickerItem>();

            for (var i = 1; i <= stickerSet.Stickers.Count; i++)
            {
                stickers.Add((TLStickerItem)stickerSet.Stickers[i - 1]);

                if (i % stickersPerRow == 0 || i == stickerSet.Stickers.Count)
                {
                    var item = new StickerSpriteItem(stickersPerRow, stickers, 96.0, 438.0, true);
                    sprites.Add(item);
                    stickers.Clear();
                }
            }

            return(sprites);
        }
Beispiel #2
0
        public TLStickerSet SelectStickerSet(long id)
        {
            Database  database;
            Statement statement;

            OpenDatabase(out database);

            Execute(database, CREATE_TABLE_STICKERSET);

            Sqlite3.sqlite3_prepare_v2(database, SELECT_TABLE_STICKERSET + " WHERE `Id` = " + id, out statement);

            TLStickerSet result = null;

            while (Sqlite3.sqlite3_step(statement) == SQLiteResult.Row)
            {
                result = new TLStickerSet
                {
                    Id         = Sqlite3.sqlite3_column_int64(statement, 0),
                    AccessHash = Sqlite3.sqlite3_column_int64(statement, 1),
                    Title      = Sqlite3.sqlite3_column_text(statement, 2),
                    ShortName  = Sqlite3.sqlite3_column_text(statement, 3),
                    Count      = Sqlite3.sqlite3_column_int(statement, 4),
                    Hash       = Sqlite3.sqlite3_column_int(statement, 5),
                    Flags      = (TLStickerSet.Flag)Sqlite3.sqlite3_column_int(statement, 6)
                };
            }

            Sqlite3.sqlite3_finalize(statement);
            Sqlite3.sqlite3_close(database);

            return(result);
        }
        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);
            }));
        }
Beispiel #4
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 shellViewModel = IoC.Get <ShellViewModel>();
                shellViewModel.RemoveStickerSet(set, inputSet);

                MTProtoService.SetMessageOnTime(2.0, AppResources.StickersRemoved);
            }),
                                                    error => Execute.BeginOnUIThread(() =>
            {
                IsWorking = false;
                Execute.ShowDebugMessage("messages.uninstallStickerSet error " + error);
            }));
        }
Beispiel #5
0
        public void Archive(TLStickerSet set)
        {
            var set32 = set as TLStickerSet32;

            if (set32 == null)
            {
                return;
            }

            var inputStickerSet = new TLInputStickerSetId {
                Id = set32.Id, AccessHash = set32.AccessHash
            };

            IsWorking = true;
            MTProtoService.InstallStickerSetAsync(inputStickerSet, TLBool.True,
                                                  result => BeginOnUIThread(() =>
            {
                IsWorking      = false;
                set32.Archived = true;
                Items.Remove(set32);

                var allStickers43 = StateService.GetAllStickers() as TLAllStickers43;
                TLMessagesStickerSet messagesSet = null;
                if (allStickers43 != null)
                {
                    messagesSet = TLUtils.RemoveStickerSet(allStickers43, set32);
                    StateService.SaveAllStickersAsync(allStickers43);
                }

                if (messagesSet != null)
                {
                    var archivedStickers = StateService.GetArchivedStickers();
                    if (archivedStickers != null)
                    {
                        TLUtils.AddStickerSetCovered(archivedStickers, messagesSet, archivedStickers.SetsCovered, new TLStickerSetCovered {
                            Cover = messagesSet.Documents.FirstOrDefault() ?? new TLDocumentEmpty {
                                Id = new TLLong(0)
                            }, StickerSet = messagesSet.Set
                        });
                        archivedStickers.Count.Value = archivedStickers.Sets.Count;

                        UpdateArchivedSetsString(archivedStickers.Count.Value);

                        StateService.SaveArchivedStickersAsync(archivedStickers);
                    }
                }

                //EventAggregator.Publish(new UpdateStickerSetsEventArgs(allStickers43));
            }),
                                                  error => BeginOnUIThread(() =>
            {
                IsWorking = false;
                Execute.ShowDebugMessage("messages.installStickerSet error " + error);
            }));
        }
Beispiel #6
0
        public override async Task OnNavigatedToAsync(object parameter, NavigationMode mode, IDictionary <string, object> state)
        {
            if (parameter is TLInputStickerSetBase set)
            {
                IsLoading = true;

                var response = await ProtoService.GetStickerSetAsync(set);

                if (response.IsSucceeded)
                {
                    IsLoading = false;

                    if (_stickersService.IsStickerPackInstalled(response.Result.Set.Id))
                    {
                        var existing = _stickersService.GetStickerSetById(response.Result.Set.Id);
                        if (existing.Set.Hash != response.Result.Set.Hash)
                        {
                            StickerSet = response.Result.Set;
                            Items.ReplaceWith(response.Result.Documents);

                            _stickersService.LoadStickers(response.Result.Set.IsMasks ? StickerType.Mask : StickerType.Image, false, true);
                        }
                        else
                        {
                            StickerSet = existing.Set;
                            Items.ReplaceWith(existing.Documents);
                        }
                    }
                    else
                    {
                        StickerSet = response.Result.Set;
                        Items.ReplaceWith(response.Result.Documents);
                    }
                }
                else
                {
                    StickerSet = new TLStickerSet {
                        Title = "Sticker pack not found."
                    };
                    Items.Clear();

                    //IsLoading = false;
                }
            }
        }
        public void CopyLink(TLStickerSet set)
        {
            if (set == null)
            {
                return;
            }

            var shortName = set.ShortName.ToString();

            if (string.IsNullOrEmpty(shortName))
            {
                return;
            }

            var addStickersLink = string.Format(Constants.AddStickersLinkPlaceholder, shortName);

            Clipboard.SetText(addStickersLink);
            MTProtoService.SetMessageOnTime(2.0, AppResources.LinkCopiedToClipboard);
        }
        public void Share(TLStickerSet set)
        {
            if (set == null)
            {
                return;
            }

            var shortName = set.ShortName.ToString();

            if (string.IsNullOrEmpty(shortName))
            {
                return;
            }

            var addStickersLink = string.Format(Constants.AddStickersLinkPlaceholder, shortName);

            StateService.ShareLink    = addStickersLink;
            StateService.ShareMessage = addStickersLink;
            StateService.ShareCaption = AppResources.Share;
            NavigationService.UriFor <ShareViewModel>().Navigate();
        }
Beispiel #9
0
 public IAsyncOperation <ContentDialogBaseResult> ShowAsync(TLStickerSet parameter, ItemClickEventHandler callback)
 {
     return(ShowAsync(new TLInputStickerSetID {
         Id = parameter.Id, AccessHash = parameter.AccessHash
     }, callback));
 }
Beispiel #10
0
 public IAsyncOperation <ContentDialogBaseResult> ShowAsync(TLStickerSet parameter)
 {
     return(ShowAsync(parameter, null));
 }