package com.netease.nim.uikit.session.emoji;
import android.content.Context;
import android.content.res.AssetManager;
import com.netease.nim.uikit.NimUIKit;
import java.io.IOException;
import java.io.InputStream;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
public class StickerCategory implements Serializable {
private static final long serialVersionUID = -81692490861539040L;
private String name; // 贴纸包名
private String title; // 显示的标题
private boolean system; // 是否是系统内置表情
private int order = 0; // 默认顺序
private transient List<StickerItem> stickers;
public StickerCategory(String name, String title, boolean system, int order) {
this.title = title;
this.name = name;
this.system = system;
this.order = order;
loadStickerData();
}
public boolean system() {
return system;
}
public void setSystem(boolean system) {
this.system = system;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public List<StickerItem> getStickers() {
return stickers;
}
public boolean hasStickers() {
return stickers != null && stickers.size() > 0;
}
public InputStream getCoverNormalInputStream(Context context) {
String filename = name + "_s_normal.png";
return makeFileInputStream(context, filename);
}
public InputStream getCoverPressedInputStream(Context context) {
String filename = name + "_s_pressed.png";
return makeFileInputStream(context, filename);
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public int getCount() {
if (stickers == null || stickers.isEmpty()) {
return 0;
}
return stickers.size();
}
public int getOrder() {
return order;
}
private InputStream makeFileInputStream(Context context, String filename) {
try {
if (system) {
AssetManager assetManager = context.getResources().getAssets();
String path = "sticker/" + filename;
return assetManager.open(path);
} else {
// for future
}
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
public List<StickerItem> loadStickerData() {
List<StickerItem> stickers = new ArrayList<>();
AssetManager assetManager = NimUIKit.getContext().getResources().getAssets();
try {
String[] files = assetManager.list("sticker/" + name);
for (String file : files) {
stickers.add(new StickerItem(name, file));
}
} catch (IOException e) {
e.printStackTrace();
}
this.stickers = stickers;
return stickers;
}
@Override
public boolean equals(Object o) {
if (o == null || !(o instanceof StickerCategory)) {
return false;
}
if (o == this) {
return true;
}
StickerCategory r = (StickerCategory) o;
return r.getName().equals(getName());
}
@Override
public int hashCode() {
return name.hashCode();
}
}