NekoX/TMessagesProj/src/main/java/org/telegram/ui/Components/StickerImageView.java

90 lines
3.0 KiB
Java

package org.telegram.ui.Components;
import android.content.Context;
import org.telegram.messenger.AndroidUtilities;
import org.telegram.messenger.DocumentObject;
import org.telegram.messenger.ImageLocation;
import org.telegram.messenger.MediaDataController;
import org.telegram.messenger.NotificationCenter;
import org.telegram.messenger.SvgHelper;
import org.telegram.tgnet.TLRPC;
import org.telegram.ui.ActionBar.Theme;
public class StickerImageView extends BackupImageView implements NotificationCenter.NotificationCenterDelegate {
int currentAccount;
int stickerNum;
String stickerPackName = AndroidUtilities.STICKERS_PLACEHOLDER_PACK_NAME;
public StickerImageView(Context context, int currentAccount) {
super(context);
this.currentAccount = currentAccount;
}
public void setStickerNum(int stickerNum) {
if (this.stickerNum != stickerNum) {
this.stickerNum = stickerNum;
setSticker();
}
}
public void setStickerPackName(String stickerPackName) {
this.stickerPackName = stickerPackName;
}
@Override
protected void onAttachedToWindow() {
super.onAttachedToWindow();
setSticker();
NotificationCenter.getInstance(currentAccount).addObserver(this, NotificationCenter.diceStickersDidLoad);
}
@Override
protected void onDetachedFromWindow() {
super.onDetachedFromWindow();
NotificationCenter.getInstance(currentAccount).removeObserver(this, NotificationCenter.diceStickersDidLoad);
}
@Override
public void didReceivedNotification(int id, int account, Object... args) {
if (id == NotificationCenter.diceStickersDidLoad) {
String name = (String) args[0];
if (stickerPackName.equals(name)) {
setSticker();
}
}
}
public void setSticker() {
String imageFilter = null;
TLRPC.Document document = null;
TLRPC.TL_messages_stickerSet set = null;
set = MediaDataController.getInstance(currentAccount).getStickerSetByName(stickerPackName);
if (set == null) {
set = MediaDataController.getInstance(currentAccount).getStickerSetByEmojiOrName(stickerPackName);
}
if (set != null && set.documents.size() > stickerNum) {
document = set.documents.get(stickerNum);
}
imageFilter = "130_130";
SvgHelper.SvgDrawable svgThumb = null;
if (document != null) {
svgThumb = DocumentObject.getSvgThumb(document.thumbs, Theme.key_emptyListPlaceholder, 0.2f);
}
if (svgThumb != null) {
svgThumb.overrideWidthAndHeight(512, 512);
}
if (document != null) {
ImageLocation imageLocation = ImageLocation.getForDocument(document);
setImage(imageLocation, imageFilter, "tgs", svgThumb, set);
} else {
imageReceiver.clearImage();
MediaDataController.getInstance(currentAccount).loadStickersByEmojiOrName(stickerPackName, false, set == null);
}
}
}