package com.xhsemoticonskeyboard.qq;
import android.content.Context;
import android.text.Editable;
import android.text.TextUtils;
import android.text.TextWatcher;
import android.util.AttributeSet;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.LinearLayout;
import com.xhsemoticonskeyboard.R;
import java.util.ArrayList;
import butterknife.Bind;
import butterknife.ButterKnife;
import butterknife.OnClick;
import sj.keyboard.adpater.PageSetAdapter;
import sj.keyboard.data.PageSetEntity;
import sj.keyboard.utils.EmoticonsKeyboardUtils;
import sj.keyboard.widget.AutoHeightLayout;
import sj.keyboard.widget.EmoticonsEditText;
import sj.keyboard.widget.EmoticonsFuncView;
import sj.keyboard.widget.EmoticonsIndicatorView;
import sj.keyboard.widget.EmoticonsToolBarView;
import sj.keyboard.widget.FuncLayout;
public class QqEmoticonsKeyBoard extends AutoHeightLayout implements EmoticonsFuncView.OnEmoticonsPageViewListener,
EmoticonsToolBarView.OnToolBarItemClickListener, EmoticonsEditText.OnBackKeyClickListener, FuncLayout.OnFuncChangeListener {
public final int APPS_HEIGHT = 256;
public static final int FUNC_TYPE_PTT = 1;
public static final int FUNC_TYPE_PTV = 2;
public static final int FUNC_TYPE_IMAGE = 3;
public static final int FUNC_TYPE_CAMERA = 4;
public static final int FUNC_TYPE_HONGBAO = 5;
public static final int FUNC_TYPE_EMOTICON = 6;
public static final int FUNC_TYPE_PLUG = 7;
protected LayoutInflater mInflater;
protected EmoticonsFuncView mEmoticonsFuncView;
protected EmoticonsIndicatorView mEmoticonsIndicatorView;
protected QqEmoticonsToolBarView mEmoticonsToolBarView;
protected boolean mDispatchKeyEventPreImeLock = false;
@Bind(R.id.et_chat)
EmoticonsEditText etChat;
@Bind(R.id.btn_send)
Button btnSend;
@Bind(R.id.btn_voice)
ImageView btnVoice;
@Bind(R.id.btn_ptv)
ImageView btnPtv;
@Bind(R.id.btn_image)
ImageView btnImage;
@Bind(R.id.btn_camera)
ImageView btnCamera;
@Bind(R.id.btn_hongbao)
ImageView btnHongbao;
@Bind(R.id.btn_emoticon)
ImageView btnEmoticon;
@Bind(R.id.btn_plug)
ImageView btnPlug;
@Bind(R.id.ly_kvml)
FuncLayout lyKvml;
public QqEmoticonsKeyBoard(Context context, AttributeSet attrs) {
super(context, attrs);
mInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View view = mInflater.inflate(R.layout.view_keyboard_qq, this);
ButterKnife.bind(this, view);
initView();
initFuncView();
}
protected void initView() {
etChat.setOnBackKeyClickListener(this);
}
protected void initFuncView() {
initEmoticonFuncView();
initEditView();
}
protected void initEmoticonFuncView() {
View keyboardView = inflateFunc();
lyKvml.addFuncView(FUNC_TYPE_EMOTICON, keyboardView);
mEmoticonsFuncView = ((EmoticonsFuncView) findViewById(com.keyboard.view.R.id.view_epv));
mEmoticonsIndicatorView = ((EmoticonsIndicatorView) findViewById(com.keyboard.view.R.id.view_eiv));
mEmoticonsToolBarView = ((QqEmoticonsToolBarView) findViewById(com.keyboard.view.R.id.view_etv));
mEmoticonsFuncView.setOnIndicatorListener(this);
mEmoticonsToolBarView.setOnToolBarItemClickListener(this);
lyKvml.setOnFuncChangeListener(this);
}
protected View inflateFunc() {
return mInflater.inflate(R.layout.view_func_emoticon_qq, null);
}
protected void initEditView() {
etChat.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if (!etChat.isFocused()) {
etChat.setFocusable(true);
etChat.setFocusableInTouchMode(true);
}
return false;
}
});
etChat.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void afterTextChanged(Editable s) {
if (!TextUtils.isEmpty(s)) {
btnSend.setBackgroundResource(R.drawable.btn_send_bg);
} else {
btnSend.setBackgroundResource(R.drawable.btn_send_bg_disable);
}
}
});
}
public void setAdapter(PageSetAdapter pageSetAdapter) {
if (pageSetAdapter != null) {
ArrayList<PageSetEntity> pageSetEntities = pageSetAdapter.getPageSetEntityList();
if (pageSetEntities != null) {
for (PageSetEntity pageSetEntity : pageSetEntities) {
mEmoticonsToolBarView.addToolItemView(pageSetEntity);
}
}
}
mEmoticonsFuncView.setAdapter(pageSetAdapter);
}
public void addFuncView(int type, View view) {
lyKvml.addFuncView(type, view);
}
public void reset() {
EmoticonsKeyboardUtils.closeSoftKeyboard(getContext());
lyKvml.hideAllFuncView();
resetIcon();
}
public void resetIcon() {
btnVoice.setImageResource(R.drawable.qq_skin_aio_panel_ptt);
btnPtv.setImageResource(R.drawable.qq_skin_aio_panel_ptv);
btnImage.setImageResource(R.drawable.qq_skin_aio_panel_image);
btnCamera.setImageResource(R.drawable.qq_skin_aio_panel_camera);
btnHongbao.setImageResource(R.drawable.qq_skin_aio_panel_hongbao);
btnEmoticon.setImageResource(R.drawable.qq_skin_aio_panel_emotion);
btnPlug.setImageResource(R.drawable.qq_skin_aio_panel_plus);
}
protected void toggleFuncView(int key) {
lyKvml.toggleFuncView(key, isSoftKeyboardPop(), etChat);
}
@Override
public void onFuncChange(int key) {
resetIcon();
switch (key) {
case FUNC_TYPE_PTT:
btnVoice.setImageResource(R.mipmap.qq_skin_aio_panel_ptt_press);
break;
case FUNC_TYPE_PTV:
btnPtv.setImageResource(R.mipmap.qq_skin_aio_panel_ptv_press);
break;
case FUNC_TYPE_IMAGE:
btnImage.setImageResource(R.mipmap.qq_skin_aio_panel_image_press);
break;
case FUNC_TYPE_CAMERA:
btnCamera.setImageResource(R.mipmap.qq_skin_aio_panel_camera_press);
break;
case FUNC_TYPE_HONGBAO:
btnHongbao.setImageResource(R.mipmap.qq_skin_aio_panel_hongbao_press);
break;
case FUNC_TYPE_EMOTICON:
btnEmoticon.setImageResource(R.mipmap.qq_skin_aio_panel_emotion_press);
break;
case FUNC_TYPE_PLUG:
btnPlug.setImageResource(R.mipmap.qq_skin_aio_panel_plus_press);
break;
}
}
protected void setFuncViewHeight(int height) {
LinearLayout.LayoutParams params = (LinearLayout.LayoutParams) lyKvml.getLayoutParams();
params.height = height;
lyKvml.setLayoutParams(params);
super.OnSoftPop(height);
}
@Override
public void onSoftKeyboardHeightChanged(int height) {
lyKvml.updateHeight(height);
}
@Override
public void OnSoftPop(int height) {
super.OnSoftPop(height);
lyKvml.setVisibility(true);
onFuncChange(lyKvml.DEF_KEY);
}
@Override
public void OnSoftClose() {
super.OnSoftClose();
if (lyKvml.isOnlyShowSoftKeyboard()) {
reset();
} else {
onFuncChange(lyKvml.getCurrentFuncKey());
}
}
public void addOnFuncKeyBoardListener(FuncLayout.OnFuncKeyBoardListener l) {
lyKvml.addOnKeyBoardListener(l);
}
@Override
public void emoticonSetChanged(PageSetEntity pageSetEntity) {
mEmoticonsToolBarView.setToolBtnSelect(pageSetEntity.getUuid());
}
@Override
public void playTo(int position, PageSetEntity pageSetEntity) {
mEmoticonsIndicatorView.playTo(position, pageSetEntity);
}
@Override
public void playBy(int oldPosition, int newPosition, PageSetEntity pageSetEntity) {
mEmoticonsIndicatorView.playBy(oldPosition, newPosition, pageSetEntity);
}
@Override
public void onToolBarItemClick(PageSetEntity pageSetEntity) {
mEmoticonsFuncView.setCurrentPageSet(pageSetEntity);
}
@Override
public void onBackKeyClick() {
if (lyKvml.isShown()) {
mDispatchKeyEventPreImeLock = true;
reset();
}
}
@Override
public boolean dispatchKeyEvent(KeyEvent event) {
switch (event.getKeyCode()) {
case KeyEvent.KEYCODE_BACK:
if (mDispatchKeyEventPreImeLock) {
mDispatchKeyEventPreImeLock = false;
return true;
}
if (lyKvml.isShown()) {
reset();
return true;
} else {
return super.dispatchKeyEvent(event);
}
}
return super.dispatchKeyEvent(event);
}
public EmoticonsEditText getEtChat() {
return etChat;
}
public EmoticonsFuncView getEmoticonsFuncView() {
return mEmoticonsFuncView;
}
public EmoticonsIndicatorView getEmoticonsIndicatorView() {
return mEmoticonsIndicatorView;
}
public EmoticonsToolBarView getEmoticonsToolBarView() {
return mEmoticonsToolBarView;
}
@OnClick(R.id.btn_voice)
void btn_voice() {
toggleFuncView(FUNC_TYPE_PTT);
setFuncViewHeight(EmoticonsKeyboardUtils.dip2px(getContext(), APPS_HEIGHT));
}
@OnClick(R.id.btn_ptv)
void btn_ptv() {
toggleFuncView(FUNC_TYPE_PTV);
setFuncViewHeight(EmoticonsKeyboardUtils.dip2px(getContext(), APPS_HEIGHT));
}
@OnClick(R.id.btn_image)
void btn_image() {
}
@OnClick(R.id.btn_camera)
void btn_camera() {
}
@OnClick(R.id.btn_hongbao)
void btn_hongbao() {
}
@OnClick(R.id.btn_emoticon)
void btn_emoticon() {
toggleFuncView(FUNC_TYPE_EMOTICON);
setFuncViewHeight(EmoticonsKeyboardUtils.dip2px(getContext(), APPS_HEIGHT));
}
@OnClick(R.id.btn_plug)
void btn_plug() {
toggleFuncView(FUNC_TYPE_PLUG);
setFuncViewHeight(EmoticonsKeyboardUtils.dip2px(getContext(), APPS_HEIGHT));
}
public Button getBtnSend() {
return btnSend;
}
}