package sj.keyboard.data;
import java.util.ArrayList;
import sj.keyboard.interfaces.PageViewInstantiateListener;
public class EmoticonPageSetEntity<T> extends PageSetEntity<EmoticonPageEntity> {
final int mLine;
final int mRow;
final EmoticonPageEntity.DelBtnStatus mDelBtnStatus;
final ArrayList<T> mEmoticonList;
public EmoticonPageSetEntity(final Builder builder) {
super(builder);
this.mLine = builder.line;
this.mRow = builder.row;
this.mDelBtnStatus = builder.delBtnStatus;
this.mEmoticonList = builder.emoticonList;
}
public int getLine() {
return mLine;
}
public int getRow() {
return mRow;
}
public EmoticonPageEntity.DelBtnStatus getDelBtnStatus() {
return mDelBtnStatus;
}
public ArrayList<T> getEmoticonList() {
return mEmoticonList;
}
public static class Builder<T> extends PageSetEntity.Builder {
/**
* 每页行数
*/
protected int line;
/**
* 每页列数
*/
protected int row;
/**
* 删除按钮
*/
protected EmoticonPageEntity.DelBtnStatus delBtnStatus = EmoticonPageEntity.DelBtnStatus.GONE;
/**
* 表情集数据源
*/
protected ArrayList<T> emoticonList;
protected PageViewInstantiateListener pageViewInstantiateListener;
public Builder() {
}
public Builder setLine(int line) {
this.line = line;
return this;
}
public Builder setRow(int row) {
this.row = row;
return this;
}
public Builder setShowDelBtn(EmoticonPageEntity.DelBtnStatus showDelBtn) {
delBtnStatus = showDelBtn;
return this;
}
public Builder setEmoticonList(ArrayList<T> emoticonList) {
this.emoticonList = emoticonList;
return this;
}
public Builder setIPageViewInstantiateItem(PageViewInstantiateListener pageViewInstantiateListener) {
this.pageViewInstantiateListener = pageViewInstantiateListener;
return this;
}
public Builder setShowIndicator(boolean showIndicator) {
isShowIndicator = showIndicator;
return this;
}
public Builder setIconUri(String iconUri) {
this.iconUri = iconUri;
return this;
}
public Builder setIconUri(int iconUri) {
this.iconUri = "" + iconUri;
return this;
}
public Builder setSetName(String setName) {
this.setName = setName;
return this;
}
public EmoticonPageSetEntity<T> build() {
int emoticonSetSum = emoticonList.size();
int del = delBtnStatus.isShow() ? 1 : 0;
int everyPageMaxSum = row * line - del;
pageCount = (int) Math.ceil((double) emoticonList.size() / everyPageMaxSum);
int start = 0;
int end = everyPageMaxSum > emoticonSetSum ? emoticonSetSum : everyPageMaxSum;
if (!pageEntityList.isEmpty()) {
pageEntityList.clear();
}
for (int i = 0; i < pageCount; i++) {
EmoticonPageEntity emoticonPageEntity = new EmoticonPageEntity();
emoticonPageEntity.setLine(line);
emoticonPageEntity.setRow(row);
emoticonPageEntity.setDelBtnStatus(delBtnStatus);
emoticonPageEntity.setEmoticonList(emoticonList.subList(start, end));
emoticonPageEntity.setIPageViewInstantiateItem(pageViewInstantiateListener);
pageEntityList.add(emoticonPageEntity);
start = everyPageMaxSum + i * everyPageMaxSum;
end = everyPageMaxSum + (i + 1) * everyPageMaxSum;
if (end >= emoticonSetSum) {
end = emoticonSetSum;
}
}
return new EmoticonPageSetEntity<>(this);
}
}
}