diff --git a/BaseModule/src/main/java/com/xscm/moduleutil/activity/BaseAppCompatActivity.java b/BaseModule/src/main/java/com/xscm/moduleutil/activity/BaseAppCompatActivity.java index 6f1189df..7e22c6b4 100644 --- a/BaseModule/src/main/java/com/xscm/moduleutil/activity/BaseAppCompatActivity.java +++ b/BaseModule/src/main/java/com/xscm/moduleutil/activity/BaseAppCompatActivity.java @@ -5,6 +5,7 @@ import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; +import android.content.pm.ActivityInfo; import android.content.res.Resources; import android.graphics.drawable.Drawable; import android.net.Uri; @@ -84,6 +85,7 @@ public abstract class BaseAppCompatActivity extends @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); + setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); getWindow().getDecorView().setBackgroundResource(R.mipmap.log_bj); setContentView(getLayoutId()); doDone(); diff --git a/BaseModule/src/main/java/com/xscm/moduleutil/bean/room/RoomSettingBean.java b/BaseModule/src/main/java/com/xscm/moduleutil/bean/room/RoomSettingBean.java index ef010848..76656966 100644 --- a/BaseModule/src/main/java/com/xscm/moduleutil/bean/room/RoomSettingBean.java +++ b/BaseModule/src/main/java/com/xscm/moduleutil/bean/room/RoomSettingBean.java @@ -26,6 +26,8 @@ public class RoomSettingBean implements MultiItemEntity { public static final int QXRoomSettingTypeRoomTypeLianG = 31; //签约 public static final int QXRoomSettingTypeRoomTypeSIGNCONTRACT = 32; + //酒吧房 + public static final int QXRoomSettingTypeRoomTypePUBROOM = 36; /// 常用工具 /// 房间补贴 diff --git a/BaseModule/src/main/java/com/xscm/moduleutil/enumType/QXRoomSeatViewType.java b/BaseModule/src/main/java/com/xscm/moduleutil/enumType/QXRoomSeatViewType.java index d074e790..e38cd1b1 100644 --- a/BaseModule/src/main/java/com/xscm/moduleutil/enumType/QXRoomSeatViewType.java +++ b/BaseModule/src/main/java/com/xscm/moduleutil/enumType/QXRoomSeatViewType.java @@ -31,7 +31,7 @@ public enum QXRoomSeatViewType { /** * 酒吧 */ - PUB(7,"酒吧"), + PUB(11,"酒吧"), /** * 小黑屋麦位 diff --git a/BaseModule/src/main/java/com/xscm/moduleutil/enumType/RoomType.kt b/BaseModule/src/main/java/com/xscm/moduleutil/enumType/RoomType.kt index a9349d7a..877453c4 100644 --- a/BaseModule/src/main/java/com/xscm/moduleutil/enumType/RoomType.kt +++ b/BaseModule/src/main/java/com/xscm/moduleutil/enumType/RoomType.kt @@ -15,7 +15,7 @@ enum class RoomType( DATING("交友", 1,3, 4, 8), // 1、3、4、8 均对应交友 BLACK_ROOM("小黑屋", 6), JUKEBOX("点唱", 9), - PUB_ROOM("酒吧", 7), + PUB_ROOM("酒吧", 11), MUTUAL_ENTERTAINMENT("互娱", 7), SIGN_CONTRACT("签约", 10); diff --git a/BaseModule/src/main/res/drawable/bg_r14_1e4853_093a1f.xml b/BaseModule/src/main/res/drawable/bg_r14_1e4853_093a1f.xml new file mode 100644 index 00000000..c976cfd5 --- /dev/null +++ b/BaseModule/src/main/res/drawable/bg_r14_1e4853_093a1f.xml @@ -0,0 +1,15 @@ + + + + + \ No newline at end of file diff --git a/BaseModule/src/main/res/mipmap-hdpi/about_bj.png b/BaseModule/src/main/res/mipmap-hdpi/about_bj.png new file mode 100644 index 00000000..9a8dbf13 Binary files /dev/null and b/BaseModule/src/main/res/mipmap-hdpi/about_bj.png differ diff --git a/BaseModule/src/main/res/mipmap-hdpi/icon_select.png b/BaseModule/src/main/res/mipmap-hdpi/icon_select.png new file mode 100644 index 00000000..abd28674 Binary files /dev/null and b/BaseModule/src/main/res/mipmap-hdpi/icon_select.png differ diff --git a/BaseModule/src/main/res/mipmap-hdpi/icon_unselect.png b/BaseModule/src/main/res/mipmap-hdpi/icon_unselect.png new file mode 100644 index 00000000..a10b6099 Binary files /dev/null and b/BaseModule/src/main/res/mipmap-hdpi/icon_unselect.png differ diff --git a/BaseModule/src/main/res/mipmap-xhdpi/about_bj.png b/BaseModule/src/main/res/mipmap-xhdpi/about_bj.png new file mode 100644 index 00000000..67ee1809 Binary files /dev/null and b/BaseModule/src/main/res/mipmap-xhdpi/about_bj.png differ diff --git a/BaseModule/src/main/res/mipmap-xhdpi/icon_select.png b/BaseModule/src/main/res/mipmap-xhdpi/icon_select.png new file mode 100644 index 00000000..6d45d66e Binary files /dev/null and b/BaseModule/src/main/res/mipmap-xhdpi/icon_select.png differ diff --git a/BaseModule/src/main/res/mipmap-xhdpi/icon_unselect.png b/BaseModule/src/main/res/mipmap-xhdpi/icon_unselect.png new file mode 100644 index 00000000..bc57885f Binary files /dev/null and b/BaseModule/src/main/res/mipmap-xhdpi/icon_unselect.png differ diff --git a/BaseModule/src/main/res/mipmap-xxhdpi/about_bj.png b/BaseModule/src/main/res/mipmap-xxhdpi/about_bj.png new file mode 100644 index 00000000..92966a47 Binary files /dev/null and b/BaseModule/src/main/res/mipmap-xxhdpi/about_bj.png differ diff --git a/BaseModule/src/main/res/mipmap-xxhdpi/icon_select.png b/BaseModule/src/main/res/mipmap-xxhdpi/icon_select.png new file mode 100644 index 00000000..af435134 Binary files /dev/null and b/BaseModule/src/main/res/mipmap-xxhdpi/icon_select.png differ diff --git a/BaseModule/src/main/res/mipmap-xxhdpi/icon_unselect.png b/BaseModule/src/main/res/mipmap-xxhdpi/icon_unselect.png new file mode 100644 index 00000000..bc777014 Binary files /dev/null and b/BaseModule/src/main/res/mipmap-xxhdpi/icon_unselect.png differ diff --git a/MainModule/src/main/java/com/xscm/modulemain/activity/room/fragment/RoomPubFragment.kt b/MainModule/src/main/java/com/xscm/modulemain/activity/room/fragment/RoomPubFragment.kt index f44e8ff1..4ddecacc 100644 --- a/MainModule/src/main/java/com/xscm/modulemain/activity/room/fragment/RoomPubFragment.kt +++ b/MainModule/src/main/java/com/xscm/modulemain/activity/room/fragment/RoomPubFragment.kt @@ -8,6 +8,7 @@ import com.xscm.modulemain.activity.room.activity.RoomActivity import com.xscm.modulemain.activity.room.presenter.PubPresenter import com.xscm.modulemain.databinding.FragmentPubRoomBinding import com.xscm.modulemain.dialog.RoomUserInfoFragment +import com.xscm.modulemain.dialog.barRoom.RoomDurationDialog import com.xscm.modulemain.widget.RoomPubWheatView import com.xscm.moduleutil.base.BaseMvpFragment import com.xscm.moduleutil.bean.RoomMessageEvent @@ -127,6 +128,10 @@ class RoomPubFragment(var mRoomInfoResp: RoomInfoResp?) : } } } + + mBinding.ivSetTime.setOnClickListener { + RoomDurationDialog(ActivityUtils.getTopActivity(),mRoomId).show() + } } fun roomInfoUpdate(roomInfoResp: RoomInfoResp) { diff --git a/MainModule/src/main/java/com/xscm/modulemain/adapter/RoomGiftGivingAdapter.kt b/MainModule/src/main/java/com/xscm/modulemain/adapter/RoomGiftGivingAdapter.kt new file mode 100644 index 00000000..1425146b --- /dev/null +++ b/MainModule/src/main/java/com/xscm/modulemain/adapter/RoomGiftGivingAdapter.kt @@ -0,0 +1,101 @@ +package com.xscm.modulemain.adapter + +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.ImageView +import android.widget.TextView +import androidx.constraintlayout.widget.ConstraintLayout +import androidx.recyclerview.widget.RecyclerView +import com.xscm.modulemain.R +import com.xscm.moduleutil.bean.RoonGiftModel +import com.xscm.moduleutil.color.ThemeableDrawableUtils +import com.xscm.moduleutil.utils.ColorManager +import com.xscm.moduleutil.utils.ImageUtils + +/** + * 项目名称:羽声语音 + * 时间:2026/1/5 10:57 + * 用途: + */ +class RoomGiftGivingAdapter(private val dataList: List, + private val onItemSelectedListener: (RoonGiftModel, Int) -> Unit +) : RecyclerView.Adapter() { + + private var selectedPosition = -1 // 默认没有选中项 + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder { + val view = LayoutInflater.from(parent.context) + .inflate(R.layout.item_gift_giving, parent, false) + return ViewHolder(view) + } + + override fun onBindViewHolder(holder: ViewHolder, position: Int) { + val item = dataList[position] + holder.bind(item, position) + } + + override fun getItemCount(): Int = dataList.size + + inner class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { + private val iv_gift_pic: ImageView = itemView.findViewById(R.id.iv_gift_pic) + private val tv_gift_name: TextView = itemView.findViewById(R.id.tv_gift_name) + private val tv_gift_price: TextView = itemView.findViewById(R.id.tv_gift_price) + + private val tv_gift_desc: TextView = itemView.findViewById(R.id.tv_gift_desc) + private val tv_wheat_qd: TextView = itemView.findViewById(R.id.tv_wheat_qd) + + fun bind(item: RoonGiftModel, position: Int) { + tv_gift_name.text = item.gift_name + tv_gift_price.text = item.gift_price + // viewHolder.item_layout.setTag(R.id.id_gift_tag, giftModel); + + //加载礼物图片 + ImageUtils.loadImageView(item.base_image, iv_gift_pic) + ThemeableDrawableUtils.setThemeableRoundedBackground( + tv_wheat_qd, + ColorManager.getInstance().primaryColorInt, + 53 + ) + tv_wheat_qd.setTextColor(ColorManager.getInstance().buttonColorInt) + + tv_wheat_qd.setOnClickListener { + // 回调选中的值和位置 + onItemSelectedListener(item, position) + } + + } + } + + /** + * 设置选中的位置 + */ + fun setSelectedPosition(position: Int) { + if (position in 0 until itemCount && position != selectedPosition) { + val previousPosition = selectedPosition + selectedPosition = position + + if (previousPosition != -1) { + notifyItemChanged(previousPosition) + } + + notifyItemChanged(position) + } + } + + /** + * 获取当前选中的位置 + */ + fun getSelectedPosition(): Int = selectedPosition + + /** + * 获取当前选中的值 + */ + fun getSelectedValue(): RoonGiftModel? { + return if (selectedPosition in 0 until itemCount) { + dataList[selectedPosition] + } else { + null + } + } +} \ No newline at end of file diff --git a/MainModule/src/main/java/com/xscm/modulemain/adapter/RoomSettingAdapter.java b/MainModule/src/main/java/com/xscm/modulemain/adapter/RoomSettingAdapter.java index bf258c21..ecf2daf7 100644 --- a/MainModule/src/main/java/com/xscm/modulemain/adapter/RoomSettingAdapter.java +++ b/MainModule/src/main/java/com/xscm/modulemain/adapter/RoomSettingAdapter.java @@ -110,6 +110,8 @@ public class RoomSettingAdapter extends BaseQuickAdapter, + private val onItemSelectedListener: (RoonGiftModel, Int) -> Unit +) : RecyclerView.Adapter() { + + private var selectedPosition = -1 // 默认没有选中项 + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder { + val view = LayoutInflater.from(parent.context) + .inflate(R.layout.item_wish_gift, parent, false) + return ViewHolder(view) + } + + override fun onBindViewHolder(holder: ViewHolder, position: Int) { + val item = dataList[position] + holder.bind(item, position) + } + + override fun getItemCount(): Int = dataList.size + + inner class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { + private val iv_gift_pic: ImageView = itemView.findViewById(R.id.iv_gift_pic) + private val tv_gift_name: TextView = itemView.findViewById(R.id.tv_gift_name) + private val tv_gift_price: TextView = itemView.findViewById(R.id.tv_gift_price) + private val cl_iv_down_on: ConstraintLayout = itemView.findViewById(R.id.cl_iv_down_on) + private val iv_down_on: ImageView = itemView.findViewById(R.id.iv_down_on) + + fun bind(item: RoonGiftModel, position: Int) { + tv_gift_name.text = item.gift_name + tv_gift_price.text = item.gift_price + // viewHolder.item_layout.setTag(R.id.id_gift_tag, giftModel); + + //加载礼物图片 + ImageUtils.loadImageView(item.getBase_image(), iv_gift_pic) + + +// //设置选中后的样式 +// if (item.isSelected()) { //被选中 +// cl_iv_down_on.setBackgroundResource(com.xscm.moduleutil.R.mipmap.room_gift_bjx) +// iv_down_on.setVisibility(View.GONE) +// } else { +// iv_down_on.setVisibility(View.GONE) +// cl_iv_down_on.setBackgroundResource(0) +// } + + // 设置选中状态 + if (position == selectedPosition) { + cl_iv_down_on.setBackgroundResource(com.xscm.moduleutil.R.mipmap.room_gift_bjx) + } else { + cl_iv_down_on.setBackgroundResource(0) + } + + // 设置点击事件 + itemView.setOnClickListener { + // 如果点击的是已选中的项,不做处理 + if (position == selectedPosition) return@setOnClickListener + + // 更新选中位置 + val previousPosition = selectedPosition + selectedPosition = position + + // 通知之前选中的项更新背景 + if (previousPosition != -1) { + notifyItemChanged(previousPosition) + } + + // 通知当前选中的项更新背景 + notifyItemChanged(position) + + // 回调选中的值和位置 + onItemSelectedListener(item, position) + } + } + } + + /** + * 设置选中的位置 + */ + fun setSelectedPosition(position: Int) { + if (position in 0 until itemCount && position != selectedPosition) { + val previousPosition = selectedPosition + selectedPosition = position + + if (previousPosition != -1) { + notifyItemChanged(previousPosition) + } + + notifyItemChanged(position) + } + } + + /** + * 获取当前选中的位置 + */ + fun getSelectedPosition(): Int = selectedPosition + + /** + * 获取当前选中的值 + */ + fun getSelectedValue(): RoonGiftModel? { + return if (selectedPosition in 0 until itemCount) { + dataList[selectedPosition] + } else { + null + } + } +} \ No newline at end of file diff --git a/MainModule/src/main/java/com/xscm/modulemain/adapter/SetupCustomGiftAdapter.kt b/MainModule/src/main/java/com/xscm/modulemain/adapter/SetupCustomGiftAdapter.kt new file mode 100644 index 00000000..001be9f5 --- /dev/null +++ b/MainModule/src/main/java/com/xscm/modulemain/adapter/SetupCustomGiftAdapter.kt @@ -0,0 +1,98 @@ +package com.xscm.modulemain.adapter + +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.ImageView +import android.widget.TextView +import androidx.constraintlayout.widget.ConstraintLayout +import androidx.recyclerview.widget.RecyclerView +import com.xscm.modulemain.R +import com.xscm.moduleutil.bean.RoonGiftModel +import com.xscm.moduleutil.color.ThemeableDrawableUtils +import com.xscm.moduleutil.utils.ColorManager +import com.xscm.moduleutil.utils.ImageUtils + +/** + * 项目名称:羽声语音 + * 时间:2026/1/5 11:23 + * 用途: + */ +class SetupCustomGiftAdapter(private val dataList: List, + private val onItemSelectedListener: (RoonGiftModel, Int) -> Unit +) : RecyclerView.Adapter() { + + private var selectedPosition = -1 // 默认没有选中项 + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder { + val view = LayoutInflater.from(parent.context) + .inflate(R.layout.item_setup_custom_gift, parent, false) + return ViewHolder(view) + } + + override fun onBindViewHolder(holder: ViewHolder, position: Int) { + val item = dataList[position] + holder.bind(item, position) + } + + override fun getItemCount(): Int = dataList.size + + inner class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { + private val iv_gift_pic: ImageView = itemView.findViewById(R.id.iv_gift_pic) + private val tv_gift_name: TextView = itemView.findViewById(R.id.tv_gift_name) + private val tv_gift_price: TextView = itemView.findViewById(R.id.tv_gift_price) + private val tv_gift_desc: TextView = itemView.findViewById(R.id.tv_gift_desc) + private val tv_wheat_sz: TextView = itemView.findViewById(R.id.tv_wheat_sz) + + fun bind(item: RoonGiftModel, position: Int) { + tv_gift_name.text = item.gift_name + tv_gift_price.text = item.gift_price + + //加载礼物图片 + ImageUtils.loadImageView(item.getBase_image(), iv_gift_pic) + + ThemeableDrawableUtils.setThemeableRoundedBackground( + tv_wheat_sz, + ColorManager.getInstance().primaryColorInt, + 53 + ) + tv_wheat_sz.setTextColor(ColorManager.getInstance().buttonColorInt) + + tv_wheat_sz.setOnClickListener { + onItemSelectedListener(item, position) + } + } + } + + /** + * 设置选中的位置 + */ + fun setSelectedPosition(position: Int) { + if (position in 0 until itemCount && position != selectedPosition) { + val previousPosition = selectedPosition + selectedPosition = position + + if (previousPosition != -1) { + notifyItemChanged(previousPosition) + } + + notifyItemChanged(position) + } + } + + /** + * 获取当前选中的位置 + */ + fun getSelectedPosition(): Int = selectedPosition + + /** + * 获取当前选中的值 + */ + fun getSelectedValue(): RoonGiftModel? { + return if (selectedPosition in 0 until itemCount) { + dataList[selectedPosition] + } else { + null + } + } +} \ No newline at end of file diff --git a/MainModule/src/main/java/com/xscm/modulemain/dialog/RoomSettingFragment.java b/MainModule/src/main/java/com/xscm/modulemain/dialog/RoomSettingFragment.java index f9c8ebc2..491c64b6 100644 --- a/MainModule/src/main/java/com/xscm/modulemain/dialog/RoomSettingFragment.java +++ b/MainModule/src/main/java/com/xscm/modulemain/dialog/RoomSettingFragment.java @@ -160,6 +160,8 @@ public class RoomSettingFragment extends BaseMvpDialogFragment(context, com.xscm.moduleutil.R.style.BaseDialogStyleH) { + + // 定义回调接口 + private var onConfirmCallback: ((String) -> Unit)? = null + + // 设置回调接口的方法 + fun setOnConfirmListener(callback: (String) -> Unit): FlirtatiousDialog { + onConfirmCallback = callback + return this + } + + override fun getLayoutId(): Int { + return R.layout.dialog_flirtatious + } + + override fun initView() { + setupWindow() + ThemeableDrawableUtils.setThemeableRoundedBackground( + mBinding.tvConfirm, + ColorManager.getInstance().primaryColorInt, + 53 + ) + mBinding.tvConfirm.setTextColor(ColorManager.getInstance().buttonColorInt) + // 设置点击事件 + mBinding.ivClose.setOnClickListener { + dismiss() + } + + mBinding.tvConfirm.setOnClickListener { + onConfirmCallback?.invoke("") + dismiss() + } + + + } + + override fun initData() { + // 初始化数据,如果需要的话 + RetrofitClient.getInstance().wallet(object : BaseObserver(){ + override fun onSubscribe(d: Disposable) { + } + + override fun onNext(t: WalletBean) { + } + }) + } + + private fun setupWindow() { + val window = window ?: return + window.setGravity(Gravity.CENTER) + window.setLayout( + (ScreenUtils.getScreenWidth() * 315f / 375).toInt(), + ViewGroup.LayoutParams.WRAP_CONTENT + ) + window.setBackgroundDrawableResource(android.R.color.transparent) + + val params = window.attributes + params.windowAnimations = com.xscm.moduleutil.R.style.BaseDialogStyleH + window.attributes = params + } +} \ No newline at end of file diff --git a/MainModule/src/main/java/com/xscm/modulemain/dialog/barRoom/GiftGivingDialog.kt b/MainModule/src/main/java/com/xscm/modulemain/dialog/barRoom/GiftGivingDialog.kt new file mode 100644 index 00000000..e6bfd4e4 --- /dev/null +++ b/MainModule/src/main/java/com/xscm/modulemain/dialog/barRoom/GiftGivingDialog.kt @@ -0,0 +1,79 @@ +package com.xscm.modulemain.dialog.barRoom + +import android.content.Context +import android.view.Gravity +import android.view.ViewGroup +import androidx.recyclerview.widget.GridLayoutManager +import com.blankj.utilcode.util.LogUtils +import com.blankj.utilcode.util.ScreenUtils +import com.xscm.modulemain.R +import com.xscm.modulemain.adapter.RoomGiftGivingAdapter +import com.xscm.modulemain.databinding.DialogGiftGivingBinding +import com.xscm.moduleutil.bean.RoonGiftModel +import com.xscm.moduleutil.http.BaseObserver +import com.xscm.moduleutil.http.RetrofitClient +import com.xscm.moduleutil.widget.dialog.BaseDialog +import io.reactivex.disposables.Disposable + +/** + * 项目名称:羽声语音 + * 时间:2026/1/5 10:41 + * 用途:酒吧房赠送自定义礼物 + */ +class GiftGivingDialog (context: Context, val roomId: String) : + BaseDialog(context, com.xscm.moduleutil.R.style.BaseDialogStyleH) { + + var adapter: RoomGiftGivingAdapter? = null + var time: MutableList = mutableListOf() + + override fun getLayoutId(): Int { + return R.layout.dialog_gift_giving + } + + override fun initView() { + setupWindow() + + val layoutManager = GridLayoutManager(context, 4) + mBinding.recycleView.layoutManager = layoutManager + mBinding.recycleView.adapter = adapter + } + + + override fun initData() { + // TODO: 这里调用的事设置插队礼物接口 + RetrofitClient.getInstance().getGiftList(1,roomId,object : BaseObserver>() { + override fun onSubscribe(d: Disposable) { + } + + override fun onNext(t: MutableList) { + if (t.isNotEmpty()) { + adapter = RoomGiftGivingAdapter(t) { selectedValue, position -> + // 处理选中事件 + LogUtils.e("选中了: $selectedValue, 位置: $position") + } + + // 设置GridLayoutManager,每行显示4个item + val layoutManager = + GridLayoutManager(context, 4) + mBinding.recycleView.layoutManager = layoutManager + mBinding.recycleView.adapter = adapter + } + } + + }) + } + + private fun setupWindow() { + val window = window ?: return + window.setGravity(Gravity.BOTTOM) + window.setLayout( + ViewGroup.LayoutParams.MATCH_PARENT, + (ScreenUtils.getAppScreenHeight() * 348f / 812).toInt() + ) + window.setBackgroundDrawableResource(android.R.color.transparent) + + val params = window.attributes + params.windowAnimations = com.xscm.moduleutil.R.style.BaseDialogStyleH + window.attributes = params + } +} \ No newline at end of file diff --git a/MainModule/src/main/java/com/xscm/modulemain/dialog/barRoom/PerformInputDialog.kt b/MainModule/src/main/java/com/xscm/modulemain/dialog/barRoom/PerformInputDialog.kt new file mode 100644 index 00000000..b041cf64 --- /dev/null +++ b/MainModule/src/main/java/com/xscm/modulemain/dialog/barRoom/PerformInputDialog.kt @@ -0,0 +1,75 @@ +package com.xscm.modulemain.dialog.barRoom + +import android.content.Context +import android.view.Gravity +import android.view.ViewGroup +import com.blankj.utilcode.util.ScreenUtils +import com.xscm.modulemain.R +import com.xscm.modulemain.databinding.DialogPerformInputBinding +import com.xscm.moduleutil.color.ThemeableDrawableUtils +import com.xscm.moduleutil.utils.ColorManager +import com.xscm.moduleutil.widget.dialog.BaseDialog + +/** + * 项目名称:羽声语音 + * 时间:2026/1/5 11:33 + * 用途:表演内容输入对话框 + */ +class PerformInputDialog(context: Context) : + BaseDialog(context, com.xscm.moduleutil.R.style.BaseDialogStyleH) { + + // 定义回调接口 + private var onConfirmCallback: ((String) -> Unit)? = null + + // 设置回调接口的方法 + fun setOnConfirmListener(callback: (String) -> Unit): PerformInputDialog { + onConfirmCallback = callback + return this + } + + override fun getLayoutId(): Int { + return R.layout.dialog_perform_input + } + + override fun initView() { + setupWindow() + ThemeableDrawableUtils.setThemeableRoundedBackground( + mBinding.tvConfirm, + ColorManager.getInstance().primaryColorInt, + 53 + ) + mBinding.tvConfirm.setTextColor(ColorManager.getInstance().buttonColorInt) + // 设置点击事件 + mBinding.ivClose.setOnClickListener { + dismiss() + } + + mBinding.tvCancel.setOnClickListener { + dismiss() + } + + mBinding.tvConfirm.setOnClickListener { + val inputText = mBinding.etInput.text.toString().trim() + onConfirmCallback?.invoke(inputText) + dismiss() + } + } + + override fun initData() { + // 初始化数据,如果需要的话 + } + + private fun setupWindow() { + val window = window ?: return + window.setGravity(Gravity.CENTER) + window.setLayout( + (ScreenUtils.getScreenWidth() * 315f / 375).toInt(), + ViewGroup.LayoutParams.WRAP_CONTENT + ) + window.setBackgroundDrawableResource(android.R.color.transparent) + + val params = window.attributes + params.windowAnimations = com.xscm.moduleutil.R.style.BaseDialogStyleH + window.attributes = params + } +} \ No newline at end of file diff --git a/MainModule/src/main/java/com/xscm/modulemain/dialog/barRoom/RoomAboutDialog.kt b/MainModule/src/main/java/com/xscm/modulemain/dialog/barRoom/RoomAboutDialog.kt new file mode 100644 index 00000000..fbcfebac --- /dev/null +++ b/MainModule/src/main/java/com/xscm/modulemain/dialog/barRoom/RoomAboutDialog.kt @@ -0,0 +1,91 @@ +package com.xscm.modulemain.dialog.barRoom + +import android.content.Context +import android.content.Intent +import android.view.Gravity +import android.view.ViewGroup +import com.blankj.utilcode.util.ActivityUtils.startActivity +import com.blankj.utilcode.util.ScreenUtils +import com.xscm.modulemain.R +import com.xscm.modulemain.activity.user.activity.RechargeActivity +import com.xscm.modulemain.databinding.DialogAboutRoomBinding +import com.xscm.moduleutil.bean.WalletBean +import com.xscm.moduleutil.color.ThemeableDrawableUtils +import com.xscm.moduleutil.http.BaseObserver +import com.xscm.moduleutil.http.RetrofitClient +import com.xscm.moduleutil.utils.ColorManager +import com.xscm.moduleutil.widget.dialog.BaseDialog +import io.reactivex.disposables.Disposable + +/** + * 项目名称:羽声语音 + * 时间:2026/1/5 14:18 + * 用途:酒吧房约她弹框 + */ +class RoomAboutDialog (context: Context) : + BaseDialog(context, com.xscm.moduleutil.R.style.BaseDialogStyleH) { + + // 定义回调接口 + private var onConfirmCallback: ((String) -> Unit)? = null + + // 设置回调接口的方法 + fun setOnConfirmListener(callback: (String) -> Unit): RoomAboutDialog { + onConfirmCallback = callback + return this + } + + override fun getLayoutId(): Int { + return R.layout.dialog_about_room + } + + override fun initView() { + setupWindow() + ThemeableDrawableUtils.setThemeableRoundedBackground( + mBinding.tvConfirm, + ColorManager.getInstance().primaryColorInt, + 53 + ) + mBinding.tvConfirm.setTextColor(ColorManager.getInstance().buttonColorInt) + // 设置点击事件 + mBinding.ivClose.setOnClickListener { + dismiss() + } + + mBinding.tvConfirm.setOnClickListener { + onConfirmCallback?.invoke("") + dismiss() + } + + mBinding.tvRecharge.setOnClickListener { + //充值 + startActivity(Intent(context, RechargeActivity::class.java)) + dismiss() + } + } + + override fun initData() { + // 初始化数据,如果需要的话 + RetrofitClient.getInstance().wallet(object : BaseObserver(){ + override fun onSubscribe(d: Disposable) { + } + + override fun onNext(t: WalletBean) { + mBinding.tvBalance.text = t.coin ?: "0" + } + }) + } + + private fun setupWindow() { + val window = window ?: return + window.setGravity(Gravity.CENTER) + window.setLayout( + (ScreenUtils.getScreenWidth() * 315f / 375).toInt(), + ViewGroup.LayoutParams.WRAP_CONTENT + ) + window.setBackgroundDrawableResource(android.R.color.transparent) + + val params = window.attributes + params.windowAnimations = com.xscm.moduleutil.R.style.BaseDialogStyleH + window.attributes = params + } +} \ No newline at end of file diff --git a/MainModule/src/main/java/com/xscm/modulemain/dialog/barRoom/RoomDurationDialog.kt b/MainModule/src/main/java/com/xscm/modulemain/dialog/barRoom/RoomDurationDialog.kt new file mode 100644 index 00000000..d951552e --- /dev/null +++ b/MainModule/src/main/java/com/xscm/modulemain/dialog/barRoom/RoomDurationDialog.kt @@ -0,0 +1,83 @@ +package com.xscm.modulemain.dialog.barRoom + +import android.content.Context +import android.view.Gravity +import android.view.ViewGroup +import androidx.recyclerview.widget.GridLayoutManager +import com.blankj.utilcode.util.LogUtils +import com.blankj.utilcode.util.ScreenUtils +import com.hjq.toast.ToastUtils +import com.xscm.modulemain.R +import com.xscm.modulemain.adapter.RoomTalentAdapter +import com.xscm.modulemain.databinding.DialogRoomDurationBinding +import com.xscm.moduleutil.widget.dialog.BaseDialog + +/** + * 项目名称:羽声语音 + * 时间:2026/1/4 18:57 + * 用途:酒吧房设置时长 + */ +class RoomDurationDialog (context: Context, val roomId: String) : + BaseDialog(context, com.xscm.moduleutil.R.style.BaseDialogStyleH) { + + var adapter: RoomTalentAdapter? = null + var time: MutableList = mutableListOf() + + override fun getLayoutId(): Int { + return R.layout.dialog_room_duration + } + + override fun initView() { + setupWindow() + mBinding.tvQx.setOnClickListener { + dismiss() + } + mBinding.tvQd.setOnClickListener { + if (adapter?.getSelectedValue()?.isEmpty() == true || adapter?.getSelectedValue()==null) { + ToastUtils.show("请选择时间") + } else {//确定 +// var messageEvent = +// RoomInputEvent(SpUtil.getUserInfo().nickname + "选择了" + adapter?.getSelectedValue() + "时间") +// (ActivityUtils.getTopActivity() as? RoomActivity)?.let { roomActivity -> +// roomActivity.dialogMessage(messageEvent) +// } + dismiss() + } + + } + + val layoutManager = GridLayoutManager(context, 3) + mBinding.recycleView.layoutManager = layoutManager + mBinding.recycleView.adapter = adapter + } + + + override fun initData() { + time= mutableListOf() + time.clear() + time.add("5分钟") + time.add("10分钟") + time.add("15分钟") + time.add("20分钟") + time.add("25分钟") + time.add("30分钟") + adapter = RoomTalentAdapter(time) { selectedValue, position -> + // 处理选中事件 + LogUtils.e("选中了: $selectedValue, 位置: $position") + } + } + + private fun setupWindow() { + val window = window ?: return + window.setGravity(Gravity.BOTTOM) + window.setLayout( + ViewGroup.LayoutParams.MATCH_PARENT, + (ScreenUtils.getAppScreenHeight() * 348f / 812).toInt() + ) + window.setBackgroundDrawableResource(android.R.color.transparent) + + val params = window.attributes + params.windowAnimations = com.xscm.moduleutil.R.style.BaseDialogStyleH + window.attributes = params + } +} \ No newline at end of file diff --git a/MainModule/src/main/java/com/xscm/modulemain/dialog/barRoom/SetupCustomGiftDialog.kt b/MainModule/src/main/java/com/xscm/modulemain/dialog/barRoom/SetupCustomGiftDialog.kt new file mode 100644 index 00000000..683e4df7 --- /dev/null +++ b/MainModule/src/main/java/com/xscm/modulemain/dialog/barRoom/SetupCustomGiftDialog.kt @@ -0,0 +1,97 @@ +package com.xscm.modulemain.dialog.barRoom + +import android.content.Context +import android.view.Gravity +import android.view.ViewGroup +import androidx.recyclerview.widget.GridLayoutManager +import com.blankj.utilcode.util.LogUtils +import com.blankj.utilcode.util.ScreenUtils +import com.hjq.toast.ToastUtils +import com.xscm.modulemain.R +import com.xscm.modulemain.adapter.RoomWishGiftAdapter +import com.xscm.modulemain.adapter.SetupCustomGiftAdapter +import com.xscm.modulemain.databinding.DialogSetupCustomGiftBinding +import com.xscm.modulemain.databinding.DialogWishGiftBinding +import com.xscm.moduleutil.bean.RoonGiftModel +import com.xscm.moduleutil.http.BaseObserver +import com.xscm.moduleutil.http.RetrofitClient +import com.xscm.moduleutil.widget.dialog.BaseDialog +import io.reactivex.disposables.Disposable + +/** + * 项目名称:羽声语音 + * 时间:2026/1/5 11:13 + * 用途:酒吧房设置自定义礼物 + */ +class SetupCustomGiftDialog(context: Context, val roomId: String) : + BaseDialog( + context, + com.xscm.moduleutil.R.style.BaseDialogStyleH + ) { + + var adapter: SetupCustomGiftAdapter? = null + var time: MutableList = mutableListOf() + + var performInputDialog: PerformInputDialog? = null + + override fun getLayoutId(): Int { + return R.layout.dialog_setup_custom_gift + } + + override fun initView() { + setupWindow() + + val layoutManager = GridLayoutManager(context, 4) + mBinding.recycleView.layoutManager = layoutManager + mBinding.recycleView.adapter = adapter + } + + + override fun initData() { + // TODO: 这里调用的事设置插队礼物接口 + RetrofitClient.getInstance() + .getGiftList(1, roomId, object : BaseObserver>() { + override fun onSubscribe(d: Disposable) { + } + + override fun onNext(t: MutableList) { + if (t.isNotEmpty()) { + adapter = SetupCustomGiftAdapter(t) { selectedValue, position -> + // 处理选中事件 + LogUtils.e("选中了: $selectedValue, 位置: $position") + if (performInputDialog == null) { + performInputDialog = PerformInputDialog(context) + } + performInputDialog?.show() + performInputDialog?.setOnConfirmListener { content -> + // TODO: 这里表演内容的回调 + ToastUtils.show(content) + } + + } + + // 设置GridLayoutManager,每行显示4个item + val layoutManager = + GridLayoutManager(context, 4) + mBinding.recycleView.layoutManager = layoutManager + mBinding.recycleView.adapter = adapter + } + } + + }) + } + + private fun setupWindow() { + val window = window ?: return + window.setGravity(Gravity.BOTTOM) + window.setLayout( + ViewGroup.LayoutParams.MATCH_PARENT, + (ScreenUtils.getAppScreenHeight() * 348f / 812).toInt() + ) + window.setBackgroundDrawableResource(android.R.color.transparent) + + val params = window.attributes + params.windowAnimations = com.xscm.moduleutil.R.style.BaseDialogStyleH + window.attributes = params + } +} \ No newline at end of file diff --git a/MainModule/src/main/java/com/xscm/modulemain/dialog/barRoom/WishGiftDialog.kt b/MainModule/src/main/java/com/xscm/modulemain/dialog/barRoom/WishGiftDialog.kt new file mode 100644 index 00000000..f79b9f77 --- /dev/null +++ b/MainModule/src/main/java/com/xscm/modulemain/dialog/barRoom/WishGiftDialog.kt @@ -0,0 +1,96 @@ +package com.xscm.modulemain.dialog.barRoom + +import android.content.Context +import android.view.Gravity +import android.view.ViewGroup +import androidx.recyclerview.widget.GridLayoutManager +import com.blankj.utilcode.util.LogUtils +import com.blankj.utilcode.util.ScreenUtils +import com.hjq.toast.ToastUtils +import com.xscm.modulemain.R +import com.xscm.modulemain.adapter.RoomWishGiftAdapter +import com.xscm.modulemain.databinding.DialogWishGiftBinding +import com.xscm.moduleutil.bean.RoonGiftModel +import com.xscm.moduleutil.http.BaseObserver +import com.xscm.moduleutil.http.RetrofitClient +import com.xscm.moduleutil.widget.dialog.BaseDialog +import io.reactivex.disposables.Disposable + +/** + * 项目名称:羽声语音 + * 时间:2026/1/5 9:14 + * 用途:酒吧房选择心愿礼物 + */ +class WishGiftDialog(context: Context, val roomId: String) : + BaseDialog(context, com.xscm.moduleutil.R.style.BaseDialogStyleH) { + + var adapter: RoomWishGiftAdapter? = null + var time: MutableList = mutableListOf() + + override fun getLayoutId(): Int { + return R.layout.dialog_wish_gift + } + + override fun initView() { + setupWindow() + mBinding.tvQx.setOnClickListener { + dismiss() + } + mBinding.tvQd.setOnClickListener { + if ( adapter?.getSelectedValue()==null) { + ToastUtils.show("请心愿礼物") + } else {//确定 +// var messageEvent = +// RoomInputEvent(SpUtil.getUserInfo().nickname + "选择了" + adapter?.getSelectedValue() + "时间") +// (ActivityUtils.getTopActivity() as? RoomActivity)?.let { roomActivity -> +// roomActivity.dialogMessage(messageEvent) +// } + dismiss() + } + + } + + val layoutManager = GridLayoutManager(context, 4) + mBinding.recycleView.layoutManager = layoutManager + mBinding.recycleView.adapter = adapter + } + + + override fun initData() { + // TODO: 这里调用的事设置插队礼物接口 + RetrofitClient.getInstance().getGiftList(1,roomId,object : BaseObserver>() { + override fun onSubscribe(d: Disposable) { + } + + override fun onNext(t: MutableList) { + if (t.isNotEmpty()) { + adapter = RoomWishGiftAdapter(t) { selectedValue, position -> + // 处理选中事件 + LogUtils.e("选中了: $selectedValue, 位置: $position") + } + + // 设置GridLayoutManager,每行显示4个item + val layoutManager = + GridLayoutManager(context, 4) + mBinding.recycleView.layoutManager = layoutManager + mBinding.recycleView.adapter = adapter + } + } + + }) + } + + private fun setupWindow() { + val window = window ?: return + window.setGravity(Gravity.BOTTOM) + window.setLayout( + ViewGroup.LayoutParams.MATCH_PARENT, + (ScreenUtils.getAppScreenHeight() * 348f / 812).toInt() + ) + window.setBackgroundDrawableResource(android.R.color.transparent) + + val params = window.attributes + params.windowAnimations = com.xscm.moduleutil.R.style.BaseDialogStyleH + window.attributes = params + } +} \ No newline at end of file diff --git a/MainModule/src/main/res/drawable/select_checkbox.xml b/MainModule/src/main/res/drawable/select_checkbox.xml new file mode 100644 index 00000000..49104e53 --- /dev/null +++ b/MainModule/src/main/res/drawable/select_checkbox.xml @@ -0,0 +1,8 @@ + + + + + + + diff --git a/MainModule/src/main/res/layout/dialog_about_room.xml b/MainModule/src/main/res/layout/dialog_about_room.xml new file mode 100644 index 00000000..8705edf1 --- /dev/null +++ b/MainModule/src/main/res/layout/dialog_about_room.xml @@ -0,0 +1,180 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/MainModule/src/main/res/layout/dialog_flirtatious.xml b/MainModule/src/main/res/layout/dialog_flirtatious.xml new file mode 100644 index 00000000..15442627 --- /dev/null +++ b/MainModule/src/main/res/layout/dialog_flirtatious.xml @@ -0,0 +1,119 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/MainModule/src/main/res/layout/dialog_gift_giving.xml b/MainModule/src/main/res/layout/dialog_gift_giving.xml new file mode 100644 index 00000000..880ceabf --- /dev/null +++ b/MainModule/src/main/res/layout/dialog_gift_giving.xml @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/MainModule/src/main/res/layout/dialog_perform_input.xml b/MainModule/src/main/res/layout/dialog_perform_input.xml new file mode 100644 index 00000000..d2f7f89a --- /dev/null +++ b/MainModule/src/main/res/layout/dialog_perform_input.xml @@ -0,0 +1,104 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/MainModule/src/main/res/layout/dialog_room_duration.xml b/MainModule/src/main/res/layout/dialog_room_duration.xml new file mode 100644 index 00000000..1425a5de --- /dev/null +++ b/MainModule/src/main/res/layout/dialog_room_duration.xml @@ -0,0 +1,82 @@ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/MainModule/src/main/res/layout/dialog_setup_custom_gift.xml b/MainModule/src/main/res/layout/dialog_setup_custom_gift.xml new file mode 100644 index 00000000..f499ae52 --- /dev/null +++ b/MainModule/src/main/res/layout/dialog_setup_custom_gift.xml @@ -0,0 +1,56 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/MainModule/src/main/res/layout/dialog_wish_gift.xml b/MainModule/src/main/res/layout/dialog_wish_gift.xml new file mode 100644 index 00000000..a922c03d --- /dev/null +++ b/MainModule/src/main/res/layout/dialog_wish_gift.xml @@ -0,0 +1,69 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/MainModule/src/main/res/layout/item_gift_giving.xml b/MainModule/src/main/res/layout/item_gift_giving.xml new file mode 100644 index 00000000..6b26a16c --- /dev/null +++ b/MainModule/src/main/res/layout/item_gift_giving.xml @@ -0,0 +1,123 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/MainModule/src/main/res/layout/item_setup_custom_gift.xml b/MainModule/src/main/res/layout/item_setup_custom_gift.xml new file mode 100644 index 00000000..d7f7f449 --- /dev/null +++ b/MainModule/src/main/res/layout/item_setup_custom_gift.xml @@ -0,0 +1,123 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/MainModule/src/main/res/layout/item_wish_gift.xml b/MainModule/src/main/res/layout/item_wish_gift.xml new file mode 100644 index 00000000..99f872e9 --- /dev/null +++ b/MainModule/src/main/res/layout/item_wish_gift.xml @@ -0,0 +1,91 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index d2dfe73d..935c4123 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -131,6 +131,7 @@ android:icon="@mipmap/ic_launcher_app" android:label="@string/app_name" android:largeHeap="true" + android:screenOrientation="portrait" android:networkSecurityConfig="@xml/network_security_config" android:requestLegacyExternalStorage="true" android:requestRawExternalStorageAccess="true"