Files
yusheng-android/MainModule/src/main/java/com/xscm/modulemain/dialog/RoomPkDialogFragment.java
2025-11-07 09:22:39 +08:00

240 lines
8.2 KiB
Java

package com.xscm.modulemain.dialog;
import android.content.Context;
import android.os.Bundle;
import android.os.Handler;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.Gravity;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.widget.ImageView;
import android.widget.LinearLayout;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.LinearLayoutManager;
import com.blankj.utilcode.util.StringUtils;
import com.chad.library.adapter.base.BaseQuickAdapter;
import com.chad.library.adapter.base.BaseViewHolder;
import com.lihang.ShadowLayout;
import com.xscm.modulemain.R;
import com.xscm.modulemain.activity.room.contacts.RoomPkContacts;
import com.xscm.modulemain.activity.room.presenter.RoomPkPresenter;
import com.xscm.modulemain.databinding.FragmentRoomPkBinding;
import com.xscm.moduleutil.base.BaseMvpDialogFragment;
import com.xscm.moduleutil.bean.room.RoomBean;
import com.xscm.moduleutil.utils.ImageUtils;
import com.scwang.smartrefresh.layout.api.RefreshLayout;
import com.scwang.smartrefresh.layout.listener.OnRefreshLoadMoreListener;
import java.util.List;
/**
* @author qx
* @data 2025/7/3
* @description:
*/
public class RoomPkDialogFragment extends BaseMvpDialogFragment<RoomPkPresenter, FragmentRoomPkBinding> implements RoomPkContacts.View {
private int page = 1;
private String keyWord = "";
private String mRoomId;
private String mUserId;
private int is_pk;
private BaseQuickAdapter<RoomBean, BaseViewHolder> mAdapter;
@Override
protected RoomPkPresenter bindPresenter() {
return new RoomPkPresenter(this, getActivity());
}
public static RoomPkDialogFragment newInstance(String roomId,String userId,int is_pk) {
RoomPkDialogFragment fragment = new RoomPkDialogFragment();
Bundle args = new Bundle();
args.putString("roomId", roomId);
args.putString("userId", userId);
args.putInt("is_pk", is_pk);
fragment.setArguments(args);
return fragment;
}
@Override
protected void initData() {
MvpPre.searchPkRoom(keyWord, page + "", "15");
}
@Override
public void onAttach(@NonNull Context context) {
super.onAttach(context);
mRoomId = getArguments().getString("roomId");
mUserId = getArguments().getString("userId");
is_pk = getArguments().getInt("is_pk");
}
@Override
protected void initView() {
mBinding.editQuery.addTextChangedListener(new TextWatcher() {
private Handler handler = new Handler();
private final long DELAY = 1500; // 1秒延迟
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
handler.removeCallbacksAndMessages(null);
}
@Override
public void afterTextChanged(Editable editable) {
handler.postDelayed(new Runnable() {
@Override
public void run() {
keyWord = editable.toString();
if (!StringUtils.isEmpty(keyWord)) {
if (MvpPre!=null) {
MvpPre.searchPkRoom(keyWord, "1", "15");
}
}
}
}, DELAY);
}
});
mBinding.srl.setOnRefreshLoadMoreListener(new OnRefreshLoadMoreListener() {
@Override
public void onLoadMore(@NonNull RefreshLayout refreshLayout) {
page++;
MvpPre.searchPkRoom(keyWord, page + "", "15");
}
@Override
public void onRefresh(@NonNull RefreshLayout refreshLayout) {
// EventBus.getDefault().post(new BannerRefreshEvent());
page = 1;
MvpPre.searchPkRoom(keyWord, "1", "15");
}
});
mBinding.rvPkAdd.setLayoutManager(new LinearLayoutManager(getContext()));
mAdapter = new BaseQuickAdapter<RoomBean, BaseViewHolder>(R.layout.room_host_add_item, null) {
@Override
protected void convert(BaseViewHolder helper, RoomBean item) {
helper.setText(R.id.tv_name, item.getRoom_name());
ImageUtils.loadHeadCC(item.getRoom_cover(), helper.getView(R.id.image));
helper.setText(R.id.tv_id, item.getRoom_number());
LinearLayout llContainer = helper.getView(R.id.ll);
llContainer.removeAllViews(); // 清空旧的 ImageView
ImageView ivAdd = helper.getView(R.id.iv_add);
ivAdd.setImageResource(com.xscm.moduleutil.R.mipmap.yq_pk);
ShadowLayout layout = helper.getView(R.id.shadow_layout);
// layout.setShadowColor(R.color.picture_color_fa632d);
layout.setShadowHiddenBottom(false);
layout.setShadowHidden(false);
layout.setShadowOffsetY(1);
layout.setShadowOffsetX(1);
helper.getView(R.id.iv_add).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//发起邀请
MvpPre.sendPk(mRoomId, mUserId, item.getRoom_id());
}
});
}
};
mBinding.rvPkAdd.setAdapter(mAdapter);
mAdapter.bindToRecyclerView(mBinding.rvPkAdd);
mBinding.tvSz.setOnClickListener(v -> {
LiveBattleSettingsDialog settingsDialog = new LiveBattleSettingsDialog(getActivity(),is_pk, new LiveBattleSettingsDialog.OnSettingsChangeListener() {
@Override
public void onFriendInvitationChanged(boolean isChecked) {
// 处理好友邀请开关状态变化
handleFriendInvitationChange(isChecked);
}
@Override
public void onRecommendInvitationChanged(boolean isChecked) {
// 处理推荐邀请开关状态变化
handleRecommendInvitationChange(isChecked);
}
});
settingsDialog.show();
});
mBinding.imSjPk.setOnClickListener(v -> {
MvpPre.sendPk(mRoomId, mUserId, "");
});
}
private void handleFriendInvitationChange(boolean isChecked) {
// 根据 isChecked 的值更新相关逻辑,并传递参数给服务器
// 例如:
// MvpPre.updateFriendInvitationSetting(isChecked);
if (isChecked){
MvpPre.refusePk(mRoomId, "1");
}else {
MvpPre.refusePk(mRoomId, "2");
}
}
private void handleRecommendInvitationChange(boolean isChecked) {
// 根据 isChecked 的值更新相关逻辑,并传递参数给服务器
// 例如:
// MvpPre.updateRecommendInvitationSetting(isChecked);
}
@Override
protected int getLayoutId() {
return R.layout.fragment_room_pk;
}
@Override
protected void initDialogStyle(Window window) {
super.initDialogStyle(window);
window.setGravity(Gravity.BOTTOM);
WindowManager.LayoutParams lp = window.getAttributes();
lp.dimAmount = 0.6f;
// 固定对话框的宽度和高度
lp.width = WindowManager.LayoutParams.MATCH_PARENT; // 宽度设置为屏幕宽度
lp.height = WindowManager.LayoutParams.WRAP_CONTENT; // 高度设置为内容高度
window.setAttributes(lp);
window.addFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);
}
@Override
public void searchPkRoom(List<RoomBean> roomBeans) {
if (page==1) {
mAdapter.setNewData(roomBeans);
}else {
if (roomBeans!=null) {
mAdapter.addData(roomBeans);
}
}
}
@Override
public void sendPk() {
dismiss();
}
@Override
public void refusePk() {
}
@Override
public void finishLoading() {
mBinding.srl.finishRefresh();
mBinding.srl.finishLoadMore();
}
}