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 implements RoomPkContacts.View { private int page = 1; private String keyWord = ""; private String mRoomId; private String mUserId; private int is_pk; private BaseQuickAdapter 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(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 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(); } }