package com.liaobo.im.fragment; import android.content.Intent; import android.os.Bundle; import android.text.Editable; import android.text.InputFilter; import android.text.TextUtils; import android.text.TextWatcher; import android.util.Log; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; import com.liaobo.im.R; import com.liaobo.im.bean.RoomMember; import com.liaobo.im.ui.base.EasyFragment; import com.liaobo.im.ui.me.redpacket.PayPasswordVerifyDialog; import com.liaobo.im.ui.message.ChatActivity; import com.liaobo.im.ui.message.MucChatActivity; import com.liaobo.im.ui.message.multi.GroupMoreFeaturesActivity; import com.liaobo.im.util.MoneyValueFilter; import com.liaobo.im.util.ToastUtil; import org.jivesoftware.smack.util.StringUtils; import java.util.Objects; import static android.app.Activity.RESULT_OK; public class MucSendPacketFragment extends EasyFragment { public static final int CODE_REQUEST_SELECT_RECEIVER = 1108; private static final String TAG = MucSendPacketFragment.class.getSimpleName(); private int redPacketType; private String mReceiverId; private String mRoomId; private EditText editRedPacketCount, editMoneyAmount, edtWishText; private Button btnSendRedPacket; private TextView tvRedPacketHint,tvReceiver; @Override protected int inflateLayoutId() { return R.layout.fragment_muc_send_red_packet; } @Override protected void onActivityCreated(Bundle savedInstanceState, boolean createView) { if (createView){ initView(); } } public void setRoomId(String mRoomId) { this.mRoomId = mRoomId; } private void initView(){ editMoneyAmount = findViewById(R.id.edit_money_amount); editMoneyAmount.setFilters(new InputFilter[] {new MoneyValueFilter()}); edtWishText = findViewById(R.id.edt_wish_text); tvRedPacketHint = findViewById(R.id.tv_red_packet_hint); editRedPacketCount = findViewById(R.id.edit_red_packet_count); btnSendRedPacket = findViewById(R.id.btn_sendRedPacket); tvReceiver = findViewById(R.id.tv_receiver); btnSendRedPacket.setOnClickListener(view -> { sendRedPacket(); }); findViewById(R.id.rlt_select_receiver).setOnClickListener(view -> { Intent intent = new Intent(getContext(), GroupMoreFeaturesActivity.class); intent.putExtra("roomId",mRoomId); intent.putExtra("isSelectReceiver",true); startActivityForResult(intent,CODE_REQUEST_SELECT_RECEIVER); }); if (redPacketType==1){ tvRedPacketHint.setText(R.string.hint_money_all_same); }else { tvRedPacketHint.setText(R.string.hint_lucky_red_packet); } editMoneyAmount.addTextChangedListener(new TextWatcher() { @Override public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) { } @Override public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) { } @Override public void afterTextChanged(Editable editable) { checkMoney(editable.toString(),editRedPacketCount.getText().toString(),mReceiverId); } }); editRedPacketCount.addTextChangedListener(new TextWatcher() { @Override public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) { } @Override public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) { } @Override public void afterTextChanged(Editable editable) { checkMoney(editMoneyAmount.getText().toString(),editable.toString(),mReceiverId); } }); } @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == CODE_REQUEST_SELECT_RECEIVER){ if (resultCode == RESULT_OK){ RoomMember roomMember =(RoomMember) data.getSerializableExtra("selectReceiver"); tvReceiver.setText(roomMember.getUserName()); mReceiverId = roomMember.getUserId(); } } } private void checkMoney(String moneyAmount, String memberCount, String receiverId) { double money = 0.00f; int count = 0; try { if (!TextUtils.isEmpty(moneyAmount)) { money = Double.parseDouble(moneyAmount); } if (!TextUtils.isEmpty(memberCount)) { count = Integer.parseInt(memberCount); } } catch (NumberFormatException e) { Log.i(TAG, Objects.requireNonNull(e.getMessage())); } if (TextUtils.isEmpty(receiverId)){ if (money>0.01){ setSendButtonStatus(true); }else { setSendButtonStatus(false); } }else { if (count <= 0 || money / count < 0.01) { setSendButtonStatus(false); } else { setSendButtonStatus(true); } } } private void setSendButtonStatus(boolean isNormal) { if (isNormal) { btnSendRedPacket.setSelected(false); btnSendRedPacket.setSelected(true); } else { btnSendRedPacket.setSelected(false); btnSendRedPacket.setSelected(true); } } private void sendRedPacket(){ String money = editMoneyAmount.getText().toString(); String count = editRedPacketCount.getText().toString(); String textWish = edtWishText.getText().toString(); if (eqData(money,count,textWish)){ PayPasswordVerifyDialog dialog = new PayPasswordVerifyDialog(getContext()); dialog.setAction(getString(R.string.chat_redpacket)); dialog.setMoney(money); final String finalMoney = money; final String finalWords = textWish; final String finalCount = count; dialog.setOnInputFinishListener(password -> { final Bundle bundle = new Bundle(); final Intent intent = new Intent(getContext(), MucChatActivity.class); bundle.putString("money", finalMoney); bundle.putString("count", finalCount); bundle.putString("words", finalWords); // 拼手气与普通红包位置对调,修改type // bundle.putString("type", (item + 1) + ""); bundle.putString("type", redPacketType+""); bundle.putString("receiver",mReceiverId); bundle.putString("payPassword", password); int resultCode = ChatActivity. REQUEST_CODE_SEND_RED_PT; if (redPacketType==1){ resultCode =ChatActivity. REQUEST_CODE_SEND_RED_PT; }else if (redPacketType ==2){ resultCode =ChatActivity. REQUEST_CODE_SEND_RED_PSQ; } intent.putExtras(bundle); getActivity() .setResult(resultCode, intent); getActivity().finish(); }); dialog.show(); } } private boolean eqData(String money, String count, String words) { if (StringUtils.isNullOrEmpty(money)) { ToastUtil.showToast(getContext(), getString(R.string.need_input_money)); return false; } else if (Double.parseDouble(money) > 1800 || Double.parseDouble(money) <= 0) { ToastUtil.showToast(getContext(), getString(R.string.red_packet_range)); return false; } else if (Double.parseDouble(money) > coreManager.getSelf().getBalance()) { ToastUtil.showToast(getContext(), getString(R.string.balance_not_enough)); return false; } else if (StringUtils.isNullOrEmpty(count)) { ToastUtil.showToast(getContext(), getString(R.string.need_red_packet_count)); return false; } else if (StringUtils.isNullOrEmpty(words)) { return false; } return true; } public void setRedPacketType(int type) { this.redPacketType = type; } }