package com.hpw.myapp.ui.publish.utils;
import android.content.Context;
import android.text.Editable;
import android.text.TextUtils;
import android.view.KeyEvent;
import android.view.View;
import android.view.ViewGroup;
import android.widget.EditText;
import com.hpw.myapp.R;
import com.hpw.myapp.ui.publish.DefXhsEmoticons;
import com.hpw.myapp.widget.emoticonskeyboard.adpater.EmoticonsAdapter;
import com.hpw.myapp.widget.emoticonskeyboard.adpater.PageSetAdapter;
import com.hpw.myapp.widget.emoticonskeyboard.data.EmoticonEntity;
import com.hpw.myapp.widget.emoticonskeyboard.data.EmoticonPageEntity;
import com.hpw.myapp.widget.emoticonskeyboard.data.EmoticonPageSetEntity;
import com.hpw.myapp.widget.emoticonskeyboard.interfaces.EmoticonClickListener;
import com.hpw.myapp.widget.emoticonskeyboard.interfaces.EmoticonDisplayListener;
import com.hpw.myapp.widget.emoticonskeyboard.interfaces.PageViewInstantiateListener;
import com.hpw.myapp.widget.emoticonskeyboard.utils.imageloader.ImageBase;
import com.hpw.myapp.widget.emoticonskeyboard.utils.imageloader.ImageLoader;
import com.hpw.myapp.widget.emoticonskeyboard.widget.EmoticonPageView;
import com.hpw.myapp.widget.emoticonskeyboard.widget.EmoticonsEditText;
import java.io.IOException;
import java.lang.reflect.Constructor;
/**
* Created by hpw on 16/10/19.
*/
public class PublishUtils {
public static void initEmoticonsEditText(EmoticonsEditText etContent) {
etContent.addEmoticonFilter(new XhsFilter());
}
public static EmoticonClickListener getCommonEmoticonClickListener(final EditText editText) {
return new EmoticonClickListener() {
@Override
public void onEmoticonClick(Object o, int actionType, boolean isDelBtn) {
if (isDelBtn) {
PublishUtils.delClick(editText);
} else {
if (o == null) {
return;
}
if (actionType == Constants.EMOTICON_CLICK_TEXT) {
String content = null;
// if (o instanceof EmojiBean) {
// content = ((EmojiBean) o).emoji;
// } else
if (o instanceof EmoticonEntity) {
content = ((EmoticonEntity) o).getContent();
}
if (TextUtils.isEmpty(content)) {
return;
}
int index = editText.getSelectionStart();
Editable editable = editText.getText();
editable.insert(index, content);
}
}
}
};
}
/**
* 插入xhs表情集
*
* @param pageSetAdapter
* @param context
* @param emoticonClickListener
*/
public static void addXhsPageSetEntity(PageSetAdapter pageSetAdapter, Context context, EmoticonClickListener emoticonClickListener) {
EmoticonPageSetEntity xhsPageSetEntity
= new EmoticonPageSetEntity.Builder()
.setLine(3)
.setRow(7)
.setEmoticonList(ParseDataUtils.ParseXhsData(DefXhsEmoticons.xhsEmoticonArray, ImageBase.Scheme.ASSETS))
.setIPageViewInstantiateItem(getDefaultEmoticonPageViewInstantiateItem(getCommonEmoticonDisplayListener(emoticonClickListener, Constants.EMOTICON_CLICK_TEXT)))
.setShowDelBtn(EmoticonPageEntity.DelBtnStatus.LAST)
.setIconUri(ImageBase.Scheme.ASSETS.toUri("01bless.gif"))
.build();
pageSetAdapter.add(xhsPageSetEntity);
}
public static PageViewInstantiateListener<EmoticonPageEntity> getDefaultEmoticonPageViewInstantiateItem(final EmoticonDisplayListener<Object> emoticonDisplayListener) {
return getEmoticonPageViewInstantiateItem(EmoticonsAdapter.class, null, emoticonDisplayListener);
}
public static PageViewInstantiateListener<EmoticonPageEntity> getEmoticonPageViewInstantiateItem(final Class _class, final EmoticonClickListener onEmoticonClickListener, final EmoticonDisplayListener<Object> emoticonDisplayListener) {
return new PageViewInstantiateListener<EmoticonPageEntity>() {
@Override
public View instantiateItem(ViewGroup container, int position, EmoticonPageEntity pageEntity) {
if (pageEntity.getRootView() == null) {
EmoticonPageView pageView = new EmoticonPageView(container.getContext());
pageView.setNumColumns(pageEntity.getRow());
pageEntity.setRootView(pageView);
try {
EmoticonsAdapter adapter = (EmoticonsAdapter) newInstance(_class, container.getContext(), pageEntity, onEmoticonClickListener);
if (emoticonDisplayListener != null) {
adapter.setOnDisPlayListener(emoticonDisplayListener);
}
pageView.getEmoticonsGridView().setAdapter(adapter);
} catch (Exception e) {
e.printStackTrace();
}
}
return pageEntity.getRootView();
}
};
}
public static EmoticonDisplayListener<Object> getCommonEmoticonDisplayListener(final EmoticonClickListener onEmoticonClickListener, final int type) {
return new EmoticonDisplayListener<Object>() {
@Override
public void onBindView(int position, ViewGroup parent, EmoticonsAdapter.ViewHolder viewHolder, Object object, final boolean isDelBtn) {
final EmoticonEntity emoticonEntity = (EmoticonEntity) object;
if (emoticonEntity == null && !isDelBtn) {
return;
}
viewHolder.ly_root.setBackgroundResource(R.drawable.bg_emoticon);
if (isDelBtn) {
viewHolder.iv_emoticon.setImageResource(R.drawable.icon_del);
} else {
try {
ImageLoader.getInstance(viewHolder.iv_emoticon.getContext()).displayImage(emoticonEntity.getIconUri(), viewHolder.iv_emoticon);
} catch (IOException e) {
e.printStackTrace();
}
}
viewHolder.rootView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (onEmoticonClickListener != null) {
onEmoticonClickListener.onEmoticonClick(emoticonEntity, type, isDelBtn);
}
}
});
}
};
}
@SuppressWarnings("unchecked")
public static Object newInstance(Class _Class, Object... args) throws Exception {
return newInstance(_Class, 0, args);
}
@SuppressWarnings("unchecked")
public static Object newInstance(Class _Class, int constructorIndex, Object... args) throws Exception {
Constructor cons = _Class.getConstructors()[constructorIndex];
return cons.newInstance(args);
}
public static void delClick(EditText editText) {
int action = KeyEvent.ACTION_DOWN;
int code = KeyEvent.KEYCODE_DEL;
KeyEvent event = new KeyEvent(action, code);
editText.onKeyDown(KeyEvent.KEYCODE_DEL, event);
}
}