240 lines
8.2 KiB
Java
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();
|
|
}
|
|
}
|