305 lines
12 KiB
Java
305 lines
12 KiB
Java
package com.xscm.modulemain.dialog;
|
||
|
||
import static android.view.View.GONE;
|
||
import static android.view.View.VISIBLE;
|
||
|
||
import android.os.Bundle;
|
||
import android.text.TextUtils;
|
||
import android.util.Log;
|
||
import android.view.Gravity;
|
||
import android.view.View;
|
||
import android.view.Window;
|
||
import android.view.WindowManager;
|
||
|
||
import androidx.fragment.app.FragmentManager;
|
||
import androidx.recyclerview.widget.LinearLayoutManager;
|
||
|
||
import com.blankj.utilcode.util.LogUtils;
|
||
import com.blankj.utilcode.util.ToastUtils;
|
||
import com.xscm.modulemain.R;
|
||
import com.xscm.modulemain.activity.room.contacts.WheatContacts;
|
||
import com.xscm.modulemain.activity.room.presenter.WheatPresenter;
|
||
import com.xscm.modulemain.adapter.WheatFeedingSelectAdapter;
|
||
import com.xscm.modulemain.databinding.FragmentWheatFeedingDialogBinding;
|
||
import com.xscm.moduleutil.base.BaseMvpDialogFragment;
|
||
import com.xscm.moduleutil.bean.RoomWheatEvent;
|
||
import com.xscm.moduleutil.bean.room.RoomApplyListBean;
|
||
import com.xscm.moduleutil.bean.room.RoomInfoResp;
|
||
import com.xscm.moduleutil.color.ThemeableDrawableUtils;
|
||
import com.xscm.moduleutil.utils.ColorManager;
|
||
import com.xscm.moduleutil.utils.ImageUtils;
|
||
|
||
import org.greenrobot.eventbus.EventBus;
|
||
import org.greenrobot.eventbus.Subscribe;
|
||
import org.greenrobot.eventbus.ThreadMode;
|
||
|
||
import java.util.ArrayList;
|
||
import java.util.List;
|
||
|
||
/**
|
||
* @author qx
|
||
* @data 2025/6/10
|
||
* @description: 上麦申请dialog弹框,等待申请
|
||
*/
|
||
public class WheatFeedingDialogFragment extends BaseMvpDialogFragment<WheatPresenter, FragmentWheatFeedingDialogBinding> implements
|
||
WheatContacts.View {
|
||
private int page;
|
||
private int displayMode; // 用于决定显示模式的参数
|
||
WheatFeedingSelectAdapter mSpecialAdapter;
|
||
WheatFeedingSelectAdapter mRegularAdapter;
|
||
private String roomId;
|
||
private RoomInfoResp roomInfoResp;
|
||
private RoomApplyListBean roomApplyListBeans;
|
||
|
||
@Override
|
||
protected WheatPresenter bindPresenter() {
|
||
return new WheatPresenter(this, getActivity());
|
||
}
|
||
|
||
public static void show(String id, int displayMode, RoomInfoResp roomInfoResp, FragmentManager fragmentManager) {
|
||
WheatFeedingDialogFragment dialogFragment = new WheatFeedingDialogFragment();
|
||
Bundle args = new Bundle();
|
||
args.putString("roomId", id); // 可选:传递参数
|
||
args.putInt("displayMode", displayMode);
|
||
args.putSerializable("roomInfoResp", roomInfoResp);
|
||
dialogFragment.setArguments(args);
|
||
dialogFragment.show(fragmentManager, "WheatFeedingDialogFragment");
|
||
}
|
||
|
||
@Override
|
||
protected void initData() {
|
||
// 从 Bundle 中获取 displayMode 参数
|
||
displayMode = getArguments().getInt("displayMode", 2); // 默认值为 0
|
||
roomInfoResp = (RoomInfoResp) getArguments().getSerializable("roomInfoResp");
|
||
// 根据 displayMode 显示不同的控件
|
||
updateViewBasedOnDisplayMode();
|
||
roomId = getArguments().getString("roomId");
|
||
MvpPre.roomApplyListBean(roomId);
|
||
}
|
||
|
||
|
||
@Subscribe(threadMode = ThreadMode.MAIN)
|
||
public void onRoomApplyListEvent(RoomWheatEvent event) {
|
||
MvpPre.roomApplyListBean(roomId);
|
||
}
|
||
|
||
private void updateViewBasedOnDisplayMode() {
|
||
switch (displayMode) {
|
||
case 1: // 模式房主或者主持模式
|
||
mBinding.tvLjsq.setVisibility(GONE);
|
||
mBinding.tvQk.setVisibility(VISIBLE);
|
||
mBinding.tvWheatRefuse.setVisibility(VISIBLE);
|
||
mBinding.tvWheatAccept.setVisibility(VISIBLE);
|
||
mBinding.tvWheatSq.setVisibility(GONE);
|
||
mBinding.tv3.setVisibility(VISIBLE);
|
||
mBinding.tv3.setText("设置");
|
||
// ... 设置其他控件的可见性
|
||
break;
|
||
case 2: // 模式 2//观众模式
|
||
mBinding.tvQk.setVisibility(GONE);
|
||
mBinding.tvWheatRefuse.setVisibility(GONE);
|
||
mBinding.tvWheatAccept.setVisibility(GONE);
|
||
mBinding.tvWheatSq.setVisibility(GONE);
|
||
mBinding.tvLjsq.setVisibility(VISIBLE);
|
||
mBinding.tv3.setVisibility(GONE);
|
||
break;
|
||
// ... 其他模式
|
||
}
|
||
}
|
||
|
||
public void updateDisplayMode(int newDisplayMode) {
|
||
if (newDisplayMode == displayMode) {
|
||
return; // 如果新旧模式相同,直接返回
|
||
}
|
||
|
||
displayMode = newDisplayMode;
|
||
updateViewBasedOnDisplayMode();
|
||
}
|
||
|
||
@Override
|
||
public void onStart() {
|
||
super.onStart();
|
||
Window window = getDialog().getWindow();
|
||
if (window != null) {
|
||
// 设置固定高度为 500dp
|
||
int screenHeight = getResources().getDisplayMetrics().heightPixels;
|
||
int heightInDp = (int) (screenHeight * 0.6f);
|
||
;
|
||
// int heightInPx = (int) (heightInDp * getResources().getDisplayMetrics().density);
|
||
window.setLayout(WindowManager.LayoutParams.MATCH_PARENT, heightInDp);
|
||
|
||
// 可选:设置动画样式(从底部弹出)
|
||
window.setWindowAnimations(com.xscm.moduleutil.R.style.CommonShowDialogBottom);
|
||
}
|
||
}
|
||
|
||
@Override
|
||
protected void initView() {
|
||
mBinding.tv3.setOnClickListener(this::onClick);
|
||
mBinding.tvWheatAccept.setOnClickListener(this::onClick);
|
||
mBinding.tvWheatRefuse.setOnClickListener(this::onClick);
|
||
mBinding.tvWheatSq.setOnClickListener(this::onClick);
|
||
mBinding.tvLjsq.setOnClickListener(this::onClick);
|
||
mBinding.tvQk.setOnClickListener(this::onClick);
|
||
|
||
mBinding.recycleView.setLayoutManager(new LinearLayoutManager(getActivity(), LinearLayoutManager.HORIZONTAL, false));
|
||
mBinding.recycleView2.setLayoutManager(new LinearLayoutManager(getActivity(), LinearLayoutManager.HORIZONTAL, false));
|
||
|
||
ThemeableDrawableUtils.setThemeableRoundedBackground(mBinding.tv3, ColorManager.getInstance().getPrimaryColorInt(), 65);
|
||
mBinding.tv3.setTextColor(ColorManager.getInstance().getButtonColorInt());
|
||
ThemeableDrawableUtils.setThemeableRoundedBackground(mBinding.tvQk, ColorManager.getInstance().getPrimaryColorInt(), 65);
|
||
mBinding.tvQk.setTextColor(ColorManager.getInstance().getButtonColorInt());
|
||
|
||
ThemeableDrawableUtils.setThemeableRoundedBackground(mBinding.tvWheatAccept, ColorManager.getInstance().getPrimaryColorInt(), 53);
|
||
mBinding.tvWheatAccept.setTextColor(ColorManager.getInstance().getButtonColorInt());
|
||
|
||
}
|
||
|
||
@Override
|
||
public void onDestroy() {
|
||
super.onDestroy();
|
||
if (EventBus.getDefault().isRegistered(this)) {
|
||
EventBus.getDefault().unregister(this);
|
||
}
|
||
}
|
||
|
||
private void onClick(View view) {
|
||
int id = view.getId();
|
||
// 通过 ID 获取资源名称
|
||
String viewName = "";
|
||
try {
|
||
viewName = view.getContext().getResources().getResourceEntryName(id);
|
||
} catch (Exception e) {
|
||
viewName = "未知View ID: " + id;
|
||
}
|
||
LogUtils.e("wheatFeedingDF","点击了" + viewName );
|
||
if (id == R.id.tv_3) {
|
||
if (mBinding.tv3.getText().equals("设置")) {
|
||
RoomWheatGiftSettingFragment.show(roomId, getChildFragmentManager());
|
||
}
|
||
// else {
|
||
// if (roomApplyListBeans!=null) {
|
||
// MvpPre.roomGift(roomId, roomApplyListBeans.getGift_info().getGift_id(), "1", roomInfoResp.getRoom_info().getPit_list().get(8).getUser_id(), "1", "");
|
||
// }
|
||
// }
|
||
} else if (id == R.id.tv_wheat_accept) {
|
||
// MvpPre.agreePit(roomId,);
|
||
up(1);
|
||
} else if (id == R.id.tv_wheat_refuse) {
|
||
// MvpPre.refusePit(roomId,);
|
||
up(2);
|
||
} else if (id == R.id.tv_wheat_sq) {
|
||
ToastUtils.showShort("点击了申请");
|
||
} else if (id == R.id.tv_ljsq) {
|
||
MvpPre.applyPit(roomId, "");
|
||
} else if (id == R.id.tv_qk) {
|
||
MvpPre.clearApply(roomId);
|
||
}
|
||
}
|
||
|
||
/**
|
||
* @param type 1:同意上麦 2:拒绝上麦
|
||
*/
|
||
private void up(int type) {
|
||
List<String> stringList = new ArrayList<>();
|
||
List<String> selectedTopics = mSpecialAdapter.getSelectedItems();
|
||
List<String> selectedRegular = mRegularAdapter.getSelectedItems();
|
||
// 返回结果给调用页面(可使用接口或 onActivityResult 等方式)
|
||
Log.d("Selected Topics", selectedTopics.toString());
|
||
if (selectedTopics.size() > 0) {
|
||
stringList.addAll(selectedTopics);
|
||
}
|
||
if (selectedRegular.size() > 0) {
|
||
stringList.addAll(selectedRegular);
|
||
}
|
||
if (selectedTopics.size() == 0 && selectedRegular.size() == 0) {
|
||
ToastUtils.showShort("未选择需要上麦人员");
|
||
return;
|
||
}
|
||
String string = TextUtils.join(",", stringList);
|
||
if (type == 1) {
|
||
MvpPre.agreePit(roomId, string);
|
||
} else if (type == 2) {
|
||
MvpPre.refusePit(roomId, string);
|
||
}
|
||
}
|
||
|
||
@Override
|
||
protected void initDialogStyle(Window window) {
|
||
super.initDialogStyle(window);
|
||
window.setGravity(Gravity.BOTTOM);
|
||
}
|
||
|
||
@Override
|
||
protected int getLayoutId() {
|
||
return R.layout.fragment_wheat_feeding_dialog;
|
||
}
|
||
|
||
|
||
@Override
|
||
public void roomApplyListBean(RoomApplyListBean roomApplyListBeans) {
|
||
if (roomApplyListBeans.getSpecial() != null || !roomApplyListBeans.getSpecial().isEmpty()) {
|
||
mBinding.tv1.setText("优先通道(" + roomApplyListBeans.getSpecial().size() + "/20)");
|
||
mSpecialAdapter = new WheatFeedingSelectAdapter(roomApplyListBeans.getSpecial());
|
||
mBinding.recycleView.setAdapter(mSpecialAdapter);
|
||
mSpecialAdapter.setOnItemClickListener(new WheatFeedingSelectAdapter.OnItemClickListener() {
|
||
@Override
|
||
public void onTvBmClick(RoomApplyListBean.Special item, int position) {
|
||
MvpPre.helpApply(roomId, item.getUser_id());
|
||
}
|
||
|
||
});
|
||
}
|
||
if (roomApplyListBeans.getRegular() != null || !roomApplyListBeans.getRegular().isEmpty()) {
|
||
mBinding.tv4.setText("普通通道(" + roomApplyListBeans.getRegular().size() + "/20)");
|
||
mRegularAdapter = new WheatFeedingSelectAdapter(roomApplyListBeans.getRegular());
|
||
mBinding.recycleView2.setAdapter(mRegularAdapter);
|
||
mRegularAdapter.setOnItemClickListener(new WheatFeedingSelectAdapter.OnItemClickListener() {
|
||
@Override
|
||
public void onTvBmClick(RoomApplyListBean.Special item, int position) {
|
||
MvpPre.helpApply(roomId, item.getUser_id());
|
||
}
|
||
});
|
||
|
||
}
|
||
if (roomApplyListBeans.getGift_info() != null) {
|
||
mBinding.tv2.setText("赠" + roomApplyListBeans.getGift_info().getGift_name() + "礼物插队");
|
||
ImageUtils.loadHeadCC(roomApplyListBeans.getGift_info().getBase_image(), mBinding.im1);
|
||
|
||
}
|
||
|
||
this.roomApplyListBeans=roomApplyListBeans;
|
||
}
|
||
|
||
@Override
|
||
public void clearApply() {
|
||
MvpPre.roomApplyListBean(roomId);
|
||
}
|
||
|
||
@Override
|
||
public void agreePit() {
|
||
// MvpPre.roomApplyListBean(roomId);
|
||
dismiss();
|
||
}
|
||
|
||
@Override
|
||
public void applyPit() {
|
||
//
|
||
// if (roomApplyListBeans!=null){
|
||
// if ((roomApplyListBeans.getSpecial() != null && !roomApplyListBeans.getSpecial().isEmpty())
|
||
// ||(roomApplyListBeans.getRegular() != null && !roomApplyListBeans.getRegular().isEmpty())){
|
||
// MvpPre.roomApplyListBean(roomId);
|
||
// }else {
|
||
// dismiss();
|
||
// }
|
||
// }else {
|
||
dismiss();
|
||
// }
|
||
}
|
||
|
||
@Override
|
||
public void giveGift() {
|
||
|
||
}
|
||
}
|