2025-12-08 19:08:07 +08:00
|
|
|
|
package com.xscm.modulemain.dialog
|
|
|
|
|
|
|
|
|
|
|
|
import android.content.Context
|
|
|
|
|
|
import android.os.CountDownTimer
|
|
|
|
|
|
import android.view.Gravity
|
|
|
|
|
|
import android.view.ViewGroup
|
|
|
|
|
|
import com.blankj.utilcode.util.ScreenUtils
|
|
|
|
|
|
import com.xscm.modulemain.R
|
|
|
|
|
|
import com.xscm.modulemain.databinding.DialogInviteBinding
|
|
|
|
|
|
import com.xscm.modulemain.manager.RoomManager
|
|
|
|
|
|
import com.xscm.moduleutil.bean.IndexRecommendRoom
|
|
|
|
|
|
import com.xscm.moduleutil.color.ThemeableDrawableUtils
|
|
|
|
|
|
import com.xscm.moduleutil.utils.ColorManager
|
|
|
|
|
|
import com.xscm.moduleutil.utils.ImageUtils
|
|
|
|
|
|
import com.xscm.moduleutil.widget.dialog.BaseDialog
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* 项目名称:羽声语音
|
|
|
|
|
|
* 时间:2025/12/8 16:19
|
|
|
|
|
|
* 用途:首页推荐房间
|
|
|
|
|
|
*/
|
2025-12-10 09:44:00 +08:00
|
|
|
|
class InviteDialog(context: Context, data: IndexRecommendRoom?) :
|
|
|
|
|
|
BaseDialog<DialogInviteBinding>(context) {
|
2025-12-08 19:08:07 +08:00
|
|
|
|
private var countDownTimer: CountDownTimer? = null // 倒计时器
|
|
|
|
|
|
private var data: IndexRecommendRoom? = data // 将构造函数参数赋值给成员变量
|
2025-12-10 09:44:00 +08:00
|
|
|
|
|
2025-12-08 19:08:07 +08:00
|
|
|
|
init {
|
|
|
|
|
|
// 设置对话框从底部弹出
|
|
|
|
|
|
window?.setGravity(Gravity.CENTER)
|
|
|
|
|
|
// 设置对话框的宽度为屏幕宽度
|
|
|
|
|
|
window?.setLayout(
|
|
|
|
|
|
(ScreenUtils.getScreenWidth() * 315f / 375).toInt(),
|
|
|
|
|
|
ViewGroup.LayoutParams.WRAP_CONTENT
|
|
|
|
|
|
)
|
|
|
|
|
|
// 添加动画效果
|
|
|
|
|
|
window?.setWindowAnimations(com.xscm.moduleutil.R.style.DialogAnimationt)
|
|
|
|
|
|
setCancelable(false)
|
|
|
|
|
|
setCanceledOnTouchOutside(false)
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
override fun getLayoutId(): Int {
|
|
|
|
|
|
return R.layout.dialog_invite
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
override fun initView() {
|
|
|
|
|
|
// 设置邀请按钮文本
|
|
|
|
|
|
ThemeableDrawableUtils.setThemeableRoundedBackground(
|
|
|
|
|
|
mBinding.btnPositive,
|
|
|
|
|
|
ColorManager.getInstance().getPrimaryColorInt(),
|
|
|
|
|
|
53
|
|
|
|
|
|
)
|
|
|
|
|
|
mBinding.btnPositive.setTextColor(ColorManager.getInstance().getButtonColorInt())
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
override fun initData() {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
mBinding.ivClose.setOnClickListener {
|
|
|
|
|
|
dismiss()
|
|
|
|
|
|
}
|
|
|
|
|
|
mBinding.btnPositive.setOnClickListener {
|
|
|
|
|
|
// 如果有房间数据,进入房间;否则只关闭对话框
|
|
|
|
|
|
data?.let { roomData ->
|
|
|
|
|
|
RoomManager.getInstance()
|
|
|
|
|
|
.fetchRoomDataAndEnter(context, roomData.room_id, "", null)
|
|
|
|
|
|
} ?: run {
|
|
|
|
|
|
// 没有数据时,可以显示提示或执行其他操作
|
|
|
|
|
|
// 这里我们只关闭对话框
|
|
|
|
|
|
}
|
|
|
|
|
|
dismiss()
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
2025-12-10 09:44:00 +08:00
|
|
|
|
|
2025-12-08 19:08:07 +08:00
|
|
|
|
fun setData(data: IndexRecommendRoom?) {
|
|
|
|
|
|
this.data = data
|
|
|
|
|
|
// 设置房间数据
|
|
|
|
|
|
data?.let { roomData ->
|
|
|
|
|
|
// 设置房间封面
|
|
|
|
|
|
ImageUtils.loadHead(roomData.room_cover, mBinding.invitePic)
|
|
|
|
|
|
|
|
|
|
|
|
// 启动倒计时
|
|
|
|
|
|
startCountDown()
|
|
|
|
|
|
} ?: run {
|
|
|
|
|
|
|
|
|
|
|
|
// 仍然启动倒计时,让用户可以关闭对话框
|
|
|
|
|
|
startCountDown()
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* 开始倒计时
|
|
|
|
|
|
*/
|
|
|
|
|
|
private fun startCountDown() {
|
2025-12-10 09:44:00 +08:00
|
|
|
|
countDownTimer?.cancel() // 确保之前的计时器被取消
|
2025-12-08 19:08:07 +08:00
|
|
|
|
countDownTimer = object : CountDownTimer(9 * 1000L, 1000) {
|
|
|
|
|
|
override fun onTick(millisUntilFinished: Long) {
|
|
|
|
|
|
val secondsLeft = (millisUntilFinished / 1000).toInt()
|
|
|
|
|
|
mBinding.btnNegative.setText("拒接" + " (" + secondsLeft + "s)")
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
override fun onFinish() {
|
|
|
|
|
|
// 检查是否被主动取消
|
2025-12-10 09:44:00 +08:00
|
|
|
|
dismiss()
|
2025-12-08 19:08:07 +08:00
|
|
|
|
}
|
|
|
|
|
|
}.start()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 设置点击事件,点击按钮也关闭对话框
|
|
|
|
|
|
mBinding.btnNegative.setOnClickListener({ v ->
|
|
|
|
|
|
dismiss()
|
|
|
|
|
|
})
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
override fun dismiss() {
|
|
|
|
|
|
// 在对话框关闭前取消倒计时
|
|
|
|
|
|
if (countDownTimer != null) {
|
|
|
|
|
|
countDownTimer?.cancel()
|
|
|
|
|
|
}
|
|
|
|
|
|
super.dismiss()
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|