签约 A
This commit is contained in:
@@ -1507,6 +1507,14 @@ class RoomActivity : BaseMvpActivity<RoomPresenter?, ActivityRoomBinding?>(),
|
||||
messageEvent.text.rights_icon
|
||||
)
|
||||
}
|
||||
} else if (msgType == EMMessageInfo.QXRoomMessageTypeSignStartText) {
|
||||
roomFragment?.handleRoomMessage(messageEvent)
|
||||
} else if (msgType == EMMessageInfo.QXRoomMessageTypeSignMaxUserText) {
|
||||
roomFragment?.handleRoomMessage(messageEvent)
|
||||
} else if (msgType == EMMessageInfo.QXRoomMessageTypeSignEndText) {
|
||||
roomFragment?.handleRoomMessage(messageEvent)
|
||||
} else if (msgType == EMMessageInfo.QXRoomMessageTypeSignDelayText) {
|
||||
roomFragment?.handleRoomMessage(messageEvent)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1797,6 +1805,7 @@ class RoomActivity : BaseMvpActivity<RoomPresenter?, ActivityRoomBinding?>(),
|
||||
roomFragment!!.upRoomInfoData(mRoomInfoResp)
|
||||
roomFragment?.handleRoomMessage(messageEvent)
|
||||
}
|
||||
|
||||
RoomType.SIGN_CONTRACT -> {
|
||||
mRoomInfoResp?.room_info?.pit_list!![pitNumber.toInt() - 1] =
|
||||
getPitBean(messageEvent, 1)
|
||||
@@ -1805,6 +1814,7 @@ class RoomActivity : BaseMvpActivity<RoomPresenter?, ActivityRoomBinding?>(),
|
||||
mBinding!!.rlMisc.visibility = View.GONE
|
||||
roomFragment?.handleRoomMessage(messageEvent)
|
||||
}
|
||||
|
||||
else -> {
|
||||
roomFragment!!.updateSeatViewExchangedWithPitArray(mRoomInfoResp)
|
||||
}
|
||||
@@ -1887,6 +1897,7 @@ class RoomActivity : BaseMvpActivity<RoomPresenter?, ActivityRoomBinding?>(),
|
||||
roomFragment!!.upRoomInfoData(mRoomInfoResp)
|
||||
roomFragment!!.handleRoomMessage(messageEvent)
|
||||
}
|
||||
|
||||
RoomType.SIGN_CONTRACT -> {
|
||||
mRoomInfoResp?.room_info?.pit_list!![pitNumber.toInt() - 1] = RoomPitBean(pitNumber)
|
||||
|
||||
@@ -2500,7 +2511,7 @@ class RoomActivity : BaseMvpActivity<RoomPresenter?, ActivityRoomBinding?>(),
|
||||
val id = view.id
|
||||
|
||||
// 通过 ID 获取资源名称
|
||||
var viewName = try {
|
||||
var viewName = try {
|
||||
view.context.resources.getResourceEntryName(id)
|
||||
} catch (e: java.lang.Exception) {
|
||||
"未知View ID: $id"
|
||||
@@ -3129,7 +3140,7 @@ class RoomActivity : BaseMvpActivity<RoomPresenter?, ActivityRoomBinding?>(),
|
||||
|
||||
}
|
||||
|
||||
fun dialogMessage(event: RoomInputEvent){
|
||||
fun dialogMessage(event: RoomInputEvent) {
|
||||
if (publicScreenFragment != null) {
|
||||
publicScreenFragment!!.fasong(event)
|
||||
}
|
||||
@@ -3660,7 +3671,6 @@ class RoomActivity : BaseMvpActivity<RoomPresenter?, ActivityRoomBinding?>(),
|
||||
}
|
||||
|
||||
|
||||
|
||||
// 添加检查房间连接状态的方法
|
||||
private fun resumeRoomState() {
|
||||
// 恢复房间相关状态
|
||||
|
||||
@@ -3,11 +3,15 @@ package com.xscm.modulemain.activity.room.contacts
|
||||
import android.app.Activity
|
||||
import com.xscm.moduleutil.activity.IPresenter
|
||||
import com.xscm.moduleutil.activity.IView
|
||||
import com.xscm.moduleutil.bean.WalletBean
|
||||
|
||||
class MentorShipContacts {
|
||||
|
||||
interface View : IView<Activity>{
|
||||
|
||||
fun signCoinList(list:List<String>)
|
||||
|
||||
fun wallet(list:List<String>,walletBean: WalletBean?)
|
||||
}
|
||||
|
||||
interface Ipre : IPresenter{
|
||||
@@ -19,8 +23,14 @@ class MentorShipContacts {
|
||||
|
||||
fun signDelay(signId:String,roomId:String)
|
||||
|
||||
fun signCoinList(signId:String)
|
||||
|
||||
fun signCoin(signId:String,sign_value:String)
|
||||
|
||||
fun setMutePit(roomId:String,pitNumber:String,isMute:String)
|
||||
|
||||
fun setLockPit(roomId:String,pitNumber:String,isLock:String)
|
||||
|
||||
fun wallet(list:List<String>)
|
||||
}
|
||||
}
|
||||
@@ -30,6 +30,7 @@ import com.xscm.moduleutil.bean.RedPacketInfo;
|
||||
import com.xscm.moduleutil.bean.RoomCharmRankBean;
|
||||
import com.xscm.moduleutil.bean.RoomMessageEvent;
|
||||
import com.xscm.moduleutil.bean.UserOnlineStatusBean;
|
||||
import com.xscm.moduleutil.bean.room.EMMessageInfo;
|
||||
import com.xscm.moduleutil.bean.room.FriendInfo;
|
||||
import com.xscm.moduleutil.bean.room.FriendUserBean;
|
||||
import com.xscm.moduleutil.bean.room.RoomAuction;
|
||||
@@ -305,7 +306,7 @@ public class RoomFragment extends BaseMvpFragment<RoomPresenter, FragmentRoomBin
|
||||
if (roomJukeboxFragment != null && roomJukeboxFragment.isAdded()) {
|
||||
roomJukeboxFragment.roomInfoUpdate(mRoomInfoResp);
|
||||
}
|
||||
}else if (roomType == RoomType.SIGN_CONTRACT) {
|
||||
} else if (roomType == RoomType.SIGN_CONTRACT) {
|
||||
if (mentorShipFragment != null && mentorShipFragment.isAdded()) {
|
||||
mentorShipFragment.roomInfoUpdate(mRoomInfoResp);
|
||||
}
|
||||
@@ -427,9 +428,9 @@ public class RoomFragment extends BaseMvpFragment<RoomPresenter, FragmentRoomBin
|
||||
else roomJukeboxFragment.roomInfoUpdate(mRoomInfoResp);
|
||||
newFragment = roomJukeboxFragment;
|
||||
} else if (roomType == RoomType.SIGN_CONTRACT) {
|
||||
if(mentorShipFragment == null){
|
||||
if (mentorShipFragment == null) {
|
||||
mentorShipFragment = RoomMentorShipFragment.Companion.newInstance(mRoomInfoResp);
|
||||
}else{
|
||||
} else {
|
||||
mentorShipFragment.roomInfoUpdate(mRoomInfoResp);
|
||||
}
|
||||
newFragment = mentorShipFragment;
|
||||
@@ -555,9 +556,9 @@ public class RoomFragment extends BaseMvpFragment<RoomPresenter, FragmentRoomBin
|
||||
public void setView() {//这里是当进入电影放房的时候,如果是排麦模式,并且不是电影放的时候,就隐藏排麦视图
|
||||
if (ActivityUtils.getTopActivity() instanceof RoomActivity) {
|
||||
if (mRoomInfoResp.getRoom_info().getRoom_up_pit_type().equals("1") && !mRoomInfoResp.getRoom_info().getType_id().equals("6")) {
|
||||
((RoomActivity)ActivityUtils.getTopActivity()).clFirstCharge(true);
|
||||
((RoomActivity) ActivityUtils.getTopActivity()).clFirstCharge(true);
|
||||
} else {
|
||||
((RoomActivity)ActivityUtils.getTopActivity()).clFirstCharge(false);
|
||||
((RoomActivity) ActivityUtils.getTopActivity()).clFirstCharge(false);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -937,6 +938,18 @@ public class RoomFragment extends BaseMvpFragment<RoomPresenter, FragmentRoomBin
|
||||
case 1059:
|
||||
mentorShipFragment.event1039(messageEvent);
|
||||
break;
|
||||
case EMMessageInfo.QXRoomMessageTypeSignStartText:
|
||||
mentorShipFragment.event1090(messageEvent);
|
||||
break;
|
||||
case EMMessageInfo.QXRoomMessageTypeSignMaxUserText:
|
||||
mentorShipFragment.event1091(messageEvent);
|
||||
break;
|
||||
case EMMessageInfo.QXRoomMessageTypeSignEndText:
|
||||
mentorShipFragment.event1092(messageEvent);
|
||||
break;
|
||||
case EMMessageInfo.QXRoomMessageTypeSignDelayText:
|
||||
mentorShipFragment.event1093(messageEvent);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -12,14 +12,25 @@ import com.xscm.modulemain.R
|
||||
import com.xscm.modulemain.activity.room.contacts.MentorShipContacts
|
||||
import com.xscm.modulemain.activity.room.presenter.MentorShipPresenter
|
||||
import com.xscm.modulemain.databinding.FragmentMentorShipBinding
|
||||
import com.xscm.modulemain.dialog.DialogMentorShip
|
||||
import com.xscm.modulemain.dialog.RoomOnlineDialogFragment
|
||||
import com.xscm.modulemain.dialog.RoomTalentDialog
|
||||
import com.xscm.modulemain.dialog.RoomUserInfoFragment
|
||||
import com.xscm.modulemain.utils.CountdownTimer
|
||||
import com.xscm.modulemain.widget.RoomMentorShipWheatView
|
||||
import com.xscm.moduleutil.base.BaseMvpFragment
|
||||
import com.xscm.moduleutil.bean.RoomMessageEvent
|
||||
import com.xscm.moduleutil.bean.WalletBean
|
||||
import com.xscm.moduleutil.bean.room.RoomInfoResp
|
||||
import com.xscm.moduleutil.bean.room.RoomPitBean
|
||||
import com.xscm.moduleutil.bean.room.RoomUserBean
|
||||
import com.xscm.moduleutil.utils.ClickUtils
|
||||
import kotlinx.coroutines.CoroutineScope
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.SupervisorJob
|
||||
import kotlinx.coroutines.cancel
|
||||
import kotlinx.coroutines.delay
|
||||
import kotlinx.coroutines.launch
|
||||
|
||||
/**
|
||||
* 签约房
|
||||
@@ -46,8 +57,26 @@ class RoomMentorShipFragment(var mRoomInfo: RoomInfoResp?) :
|
||||
private var popupWindow: PopupWindow? = null
|
||||
|
||||
private var mPitBean: RoomPitBean? = null
|
||||
private var roomId: String = mRoomInfo?.room_info?.room_id!!
|
||||
private var signPitBean: RoomPitBean? = null
|
||||
private var mRoomId: String = mRoomInfo?.room_info?.room_id!!
|
||||
private var mSignPitBean: RoomPitBean? = null
|
||||
|
||||
private var mSignId: String? = null
|
||||
|
||||
private val timer = CountdownTimer()
|
||||
private val scope = CoroutineScope(Dispatchers.Main + SupervisorJob())
|
||||
|
||||
private val startOrDelay = arrayOf("开始", "延迟")
|
||||
|
||||
private var mUserInfo: RoomUserBean? = mRoomInfo?.user_info
|
||||
|
||||
private var dialogMentorShip: DialogMentorShip? = null
|
||||
|
||||
private val ivForMai = arrayOf(
|
||||
com.xscm.moduleutil.R.mipmap.icon_apply_for_mai,
|
||||
com.xscm.moduleutil.R.mipmap.icon_show_alent,
|
||||
com.xscm.moduleutil.R.mipmap.icon_contract
|
||||
)
|
||||
|
||||
|
||||
override fun getLayoutId(): Int {
|
||||
return R.layout.fragment_mentor_ship
|
||||
@@ -70,14 +99,19 @@ class RoomMentorShipFragment(var mRoomInfo: RoomInfoResp?) :
|
||||
viewList.add(mBinding.rmswRightMidd)
|
||||
viewList.add(mBinding.rmswRightRight)
|
||||
|
||||
mBinding.tvTimeLeft.visibility = View.GONE
|
||||
|
||||
for ((idx, view) in viewList.withIndex()) {
|
||||
if (mRoomInfo?.room_info?.pit_list!!.size > indexList[idx].toInt() - 1) {
|
||||
view.setRoomWheatNumber(indexList[idx])
|
||||
val bean = mRoomInfo?.room_info?.pit_list!![indexList[idx].toInt() - 1]
|
||||
if (idx == 0) {
|
||||
view.setHostTv(mBinding.tvHostName)
|
||||
}else if (idx == 1){
|
||||
signPitBean = bean
|
||||
} else if (idx == 1) {
|
||||
mSignPitBean = bean
|
||||
if (bean.user_id != "0" && mUserInfo?.user_id != null && viewList[0].pitBean?.user_id.equals(mUserInfo?.user_id.toString())) {
|
||||
mBinding.tvTimeLeft.visibility = View.VISIBLE
|
||||
}
|
||||
}
|
||||
view.isMentorShip(true)
|
||||
view.setData(bean)
|
||||
@@ -116,7 +150,7 @@ class RoomMentorShipFragment(var mRoomInfo: RoomInfoResp?) :
|
||||
|
||||
// 处理抱麦逻辑
|
||||
RoomOnlineDialogFragment.show(
|
||||
roomId,
|
||||
mRoomId,
|
||||
mPitBean?.pit_number,
|
||||
mRoomInfo?.user_info,
|
||||
mRoomInfo,
|
||||
@@ -133,56 +167,94 @@ class RoomMentorShipFragment(var mRoomInfo: RoomInfoResp?) :
|
||||
mBinding.ivApplyForMai.setOnClickListener(this)
|
||||
mBinding.tvTimeLeft.setOnClickListener(this)
|
||||
mBinding.tvTimeRight.setOnClickListener(this)
|
||||
|
||||
if (mRoomInfo?.sign_info?.sign_id != "-1") {
|
||||
if (mRoomInfo?.sign_info?.sign_status == 0) {
|
||||
mBinding.tvTimeLeft.text = startOrDelay[0]
|
||||
} else {
|
||||
mBinding.tvTimeLeft.text = startOrDelay[1]
|
||||
startTimer(mRoomInfo?.sign_info?.end_time!!)
|
||||
}
|
||||
mBinding.tvSignDay.visibility = View.VISIBLE
|
||||
|
||||
mSignId = mRoomInfo?.sign_info?.sign_id
|
||||
mBinding.tvLeftPrice.text = mRoomInfo?.sign_info?.current_body_value.toString()
|
||||
|
||||
|
||||
mBinding.tvSignDay.text = "签约${mRoomInfo?.sign_info?.sign_day}天"
|
||||
|
||||
if (mUserInfo?.user_id?.toString().equals(mSignPitBean?.user_id)) {
|
||||
setIvForMai(1)
|
||||
} else if (!mSignPitBean?.user_id.equals("0")) {
|
||||
setIvForMai(2)
|
||||
} else {
|
||||
setIvForMai(0)
|
||||
}
|
||||
} else {
|
||||
mBinding.tvTimeLeft.text = startOrDelay[0]
|
||||
mBinding.tvTime.text = "倒计时 00:00"
|
||||
setIvForMai(0)
|
||||
}
|
||||
}
|
||||
|
||||
override fun onClick(v: View?) {
|
||||
when (v?.id) {
|
||||
R.id.iv_apply_for_mai -> {
|
||||
MvpPre!!.applyPit(mRoomInfo?.room_info?.room_id!!, "")
|
||||
when (mBinding.ivApplyForMai.tag) {
|
||||
ivForMai[0] -> {
|
||||
MvpPre!!.applyPit(mRoomInfo?.room_info?.room_id!!, "")
|
||||
}
|
||||
|
||||
ivForMai[1] -> {
|
||||
RoomTalentDialog(ActivityUtils.getTopActivity(), mRoomId).show()
|
||||
}
|
||||
|
||||
ivForMai[2] -> {
|
||||
MvpPre?.signCoinList(mSignId!!)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
R.id.tv_time_left -> {
|
||||
if (mBinding.tvTimeLeft.text.toString() == "开始") {
|
||||
MvpPre.signStart(roomId,signPitBean?.user_id!!)
|
||||
if (mBinding.tvTimeLeft.text.toString() == startOrDelay[0]) {
|
||||
MvpPre.signStart(mRoomId, mSignPitBean?.user_id!!)
|
||||
} else {
|
||||
MvpPre.signDelay(mRoomInfo?.sign_info?.sign_id!!,roomId)
|
||||
MvpPre.signDelay(mSignId!!, mRoomId)
|
||||
}
|
||||
}
|
||||
|
||||
R.id.tv_time_right -> {
|
||||
MvpPre.signEnd(mRoomInfo?.sign_info?.sign_id!!)
|
||||
MvpPre.signEnd(mSignId!!)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun showHostOrAboveBottomView(isSignUser:Boolean) {
|
||||
private fun showHostOrAboveBottomView(isShow: Boolean) {
|
||||
if (getHostUser() < 4) {
|
||||
mBinding.tvTimeLeft.visibility = View.VISIBLE
|
||||
mBinding.tvTimeLeft.text = "开始"
|
||||
mBinding.tvTime.text = "倒计时 00:00"
|
||||
mBinding.tvTimeRight.visibility = if (isShow) View.VISIBLE else View.INVISIBLE
|
||||
mBinding.tvTime.visibility = if (isShow) View.VISIBLE else View.INVISIBLE
|
||||
} else {
|
||||
mBinding.tvHostName.visibility = View.GONE
|
||||
mBinding.tvTime.visibility = if (isShow) View.VISIBLE else View.INVISIBLE
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
fun roomInfoUpdate(mRoomInfoResp: RoomInfoResp) {
|
||||
mRoomInfo = mRoomInfoResp
|
||||
mUserInfo = mRoomInfo?.user_info
|
||||
}
|
||||
|
||||
fun event1003(messageEvent: RoomMessageEvent) {
|
||||
val fromUserInfo = messageEvent.text.fromUserInfo ?: return
|
||||
|
||||
val pitNumber = messageEvent.text.pit_number
|
||||
val userId = fromUserInfo.user_id
|
||||
|
||||
if (indexList.contains(pitNumber)) {
|
||||
val viewPos = indexList.indexOf(pitNumber)
|
||||
val pitBean = mRoomInfo?.room_info?.pit_list!![pitNumber.toInt() - 1]
|
||||
viewList[viewPos].setData(pitBean)
|
||||
if (pitNumber == "1") {
|
||||
showHostOrAboveBottomView(true)
|
||||
signPitBean = pitBean
|
||||
mSignPitBean = pitBean
|
||||
}
|
||||
if (pitNumber == "9" && pitBean.user_id.equals(mUserInfo?.user_id.toString())) {
|
||||
mBinding.tvTimeLeft.visibility = View.VISIBLE
|
||||
}
|
||||
}
|
||||
|
||||
@@ -200,12 +272,154 @@ class RoomMentorShipFragment(var mRoomInfo: RoomInfoResp?) :
|
||||
viewList[viewPos].setData(pitBean)
|
||||
|
||||
if (pitNumber == "1") {
|
||||
showHostOrAboveBottomView(false)
|
||||
signPitBean = pitBean
|
||||
mSignPitBean = pitBean
|
||||
}
|
||||
|
||||
if (pitNumber == "9" && pitBean.user_id.equals(mUserInfo?.user_id.toString())) {
|
||||
mBinding.tvTimeLeft.visibility = View.GONE
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 开始
|
||||
* sign_id :场次id(这个出价的时候要传回来)
|
||||
*/
|
||||
fun event1090(messageEvent: RoomMessageEvent?) {
|
||||
mSignId = messageEvent?.text?.sign_id
|
||||
val endTime = messageEvent?.text?.end_time
|
||||
val signDay = messageEvent?.text?.sign_day
|
||||
val currBodyValue = messageEvent?.text?.current_body_value
|
||||
if (!mSignId.equals("-1")) {
|
||||
startTimer(endTime?.toLong()!!)
|
||||
mBinding.tvTimeLeft.text = startOrDelay[1]
|
||||
mBinding.tvLeftPrice.text = currBodyValue
|
||||
mBinding.tvSignDay.visibility = View.VISIBLE
|
||||
mBinding.tvSignDay.text = "签约${signDay}天"
|
||||
|
||||
if (viewList[indexList.indexOf("1")].pitBean.user_id.equals(mUserInfo?.user_id.toString())) {
|
||||
setIvForMai(1)
|
||||
} else {
|
||||
setIvForMai(2)
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* IM 推送 1091
|
||||
* FromUserInfo :出价最高用户信息,sign_value:出的价,sign_id:场次
|
||||
*/
|
||||
fun event1091(messageEvent: RoomMessageEvent?) {
|
||||
val fromUserInfo = messageEvent?.text?.fromUserInfo
|
||||
val signId = messageEvent?.text?.sign_id
|
||||
if (fromUserInfo != null && mSignId == signId) {
|
||||
val pitBean = RoomPitBean()
|
||||
pitBean.pit_number = indexList[2]
|
||||
pitBean.user_id = fromUserInfo.user_id.toString()
|
||||
pitBean.avatar = fromUserInfo.avatar
|
||||
pitBean.nickname = fromUserInfo.nickname
|
||||
pitBean.sex = fromUserInfo.sex.toString()
|
||||
pitBean.charm = fromUserInfo.charm
|
||||
viewList[indexList.indexOf("2")].setData(pitBean)
|
||||
|
||||
if (dialogMentorShip != null && dialogMentorShip?.isShowing!!) {
|
||||
MvpPre!!.signCoinList(mSignId!!)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* IM推送 1092 结束
|
||||
* FromUserInfo:出价用户信息
|
||||
* ToUserInfo:被签用户信息
|
||||
* sign_value:出的最高价
|
||||
*/
|
||||
fun event1092(messageEvent: RoomMessageEvent?) {
|
||||
stopTimer()
|
||||
|
||||
val fromUserInfo = messageEvent?.text?.fromUserInfo
|
||||
val toUserInfo = messageEvent?.text?.toUserInfo
|
||||
val signValue = messageEvent?.text?.sign_value
|
||||
if (fromUserInfo != null && toUserInfo != null && signValue != null) {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* IM 1093的推送
|
||||
* end_time:延时到这个时间点
|
||||
*/
|
||||
fun event1093(messageEvent: RoomMessageEvent?) {
|
||||
val endTime = messageEvent?.text?.end_time
|
||||
restartWithDelay(endTime?.toLong()!!)
|
||||
}
|
||||
|
||||
|
||||
override fun signCoinList(list: List<String>) {
|
||||
MvpPre!!.wallet(list)
|
||||
}
|
||||
|
||||
override fun wallet(list: List<String>,walletBean: WalletBean?) {
|
||||
if (dialogMentorShip == null) {
|
||||
dialogMentorShip = DialogMentorShip(ActivityUtils.getTopActivity())
|
||||
}
|
||||
dialogMentorShip?.show(list,mSignPitBean,
|
||||
object : DialogMentorShip.OnItemClickListener {
|
||||
override fun onItemClick(coin: String) {
|
||||
MvpPre!!.signCoin(mSignId!!, coin)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
private fun setIvForMai(idx: Int) {
|
||||
mBinding.ivApplyForMai.setImageResource(ivForMai[idx])
|
||||
mBinding.ivApplyForMai.tag = ivForMai[idx]
|
||||
}
|
||||
|
||||
|
||||
// 在需要开始计时的地方调用
|
||||
private fun startTimer(milliseconds: Long) {
|
||||
showHostOrAboveBottomView(true)
|
||||
// 启动计时器
|
||||
timer.startCountdown(milliseconds, scope)
|
||||
// 观察时间变化
|
||||
scope.launch {
|
||||
timer.timeLeft.collect { time ->
|
||||
val formattedTime = timer.formatTime(time)
|
||||
// 更新UI显示
|
||||
updateTimerDisplay(formattedTime)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun stopTimer() {
|
||||
timer.stop()
|
||||
setIvForMai(0)
|
||||
showHostOrAboveBottomView(false)
|
||||
|
||||
mBinding.tvLeftPrice.text = "0"
|
||||
mBinding.tvSignDay.visibility = View.GONE
|
||||
mBinding.tvTimeLeft.text = startOrDelay[0]
|
||||
mBinding.tvTime.text = "倒计时 00:00"
|
||||
}
|
||||
|
||||
// 更新UI显示
|
||||
private fun updateTimerDisplay(time: String) {
|
||||
// 在这里更新你的UI,比如:
|
||||
mBinding.tvTime.text = "倒计时 ${time}"
|
||||
}
|
||||
|
||||
// 延迟后重新开始计时
|
||||
private fun restartWithDelay(newMilliseconds: Long, delayMillis: Long = 1000) {
|
||||
scope.launch {
|
||||
delay(delayMillis)
|
||||
startTimer(newMilliseconds)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
fun event1035(messageEvent: RoomMessageEvent) {
|
||||
|
||||
}
|
||||
@@ -271,7 +485,7 @@ class RoomMentorShipFragment(var mRoomInfo: RoomInfoResp?) :
|
||||
}
|
||||
switchCloseMic.setOnCheckedChangeListener { compoundButton, b ->
|
||||
MvpPre.setMutePit(
|
||||
roomId,
|
||||
mRoomId,
|
||||
mPitBean?.pit_number!!,
|
||||
if (b) "2" else "4"
|
||||
)
|
||||
@@ -280,7 +494,7 @@ class RoomMentorShipFragment(var mRoomInfo: RoomInfoResp?) :
|
||||
|
||||
switchLockMic.setOnCheckedChangeListener { compoundButton, b ->
|
||||
MvpPre.setLockPit(
|
||||
roomId,
|
||||
mRoomId,
|
||||
mPitBean?.pit_number!!,
|
||||
if (b) "1" else "0"
|
||||
)
|
||||
@@ -290,7 +504,7 @@ class RoomMentorShipFragment(var mRoomInfo: RoomInfoResp?) :
|
||||
tvHugMic.setOnClickListener { v: View? ->
|
||||
// 处理抱麦逻辑
|
||||
RoomOnlineDialogFragment.show(
|
||||
roomId, mPitBean?.pit_number, mRoomInfo?.user_info, mRoomInfo,
|
||||
mRoomId, mPitBean?.pit_number, mRoomInfo?.user_info, mRoomInfo,
|
||||
childFragmentManager
|
||||
)
|
||||
popupWindow!!.dismiss()
|
||||
@@ -322,4 +536,12 @@ class RoomMentorShipFragment(var mRoomInfo: RoomInfoResp?) :
|
||||
viewList.clear()
|
||||
}
|
||||
|
||||
|
||||
// 在Fragment销毁时记得清理资源
|
||||
override fun onDestroy() {
|
||||
super.onDestroy()
|
||||
scope.cancel()
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -1,11 +1,12 @@
|
||||
package com.xscm.modulemain.activity.room.presenter
|
||||
|
||||
import android.content.Context
|
||||
import com.xscm.modulemain.activity.room.contacts.JukeboxContacts
|
||||
import com.xscm.modulemain.activity.room.contacts.MentorShipContacts
|
||||
import com.xscm.moduleutil.bean.WalletBean
|
||||
import com.xscm.moduleutil.http.BaseObserver
|
||||
import com.xscm.moduleutil.http.RetrofitClient
|
||||
import com.xscm.moduleutil.presenter.BasePresenter
|
||||
import com.xscm.moduleutil.presenter.RewardGiftContacts
|
||||
import io.reactivex.disposables.Disposable
|
||||
import java.lang.ref.WeakReference
|
||||
|
||||
@@ -24,6 +25,23 @@ class MentorShipPresenter(context: Context, val view: MentorShipContacts.View) :
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
override fun wallet(list:List<String>) {
|
||||
RetrofitClient.getInstance().wallet(object : BaseObserver<WalletBean?>() {
|
||||
override fun onSubscribe(d: Disposable) {
|
||||
addDisposable(d)
|
||||
}
|
||||
|
||||
override fun onNext(walletBean: WalletBean) {
|
||||
if (MvpRef == null) {
|
||||
MvpRef = WeakReference(view)
|
||||
}
|
||||
MvpRef.get()?.wallet(list,walletBean)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
override fun signStart(roomId: String, userId: String) {
|
||||
RetrofitClient.getInstance().signStart(roomId, userId, object : BaseObserver<String?>() {
|
||||
override fun onSubscribe(d: Disposable) {
|
||||
@@ -60,6 +78,33 @@ class MentorShipPresenter(context: Context, val view: MentorShipContacts.View) :
|
||||
})
|
||||
}
|
||||
|
||||
override fun signCoinList(signId: String) {
|
||||
RetrofitClient.getInstance().signCoinList(signId, object : BaseObserver<List<String>>() {
|
||||
override fun onSubscribe(d: Disposable) {
|
||||
addDisposable(d)
|
||||
}
|
||||
|
||||
override fun onNext(list: List<String>) {
|
||||
if (MvpRef == null){
|
||||
MvpRef = WeakReference(view)
|
||||
}
|
||||
MvpRef.get()?.signCoinList(list)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
override fun signCoin(signId: String, sign_value: String) {
|
||||
RetrofitClient.getInstance().signCoin(signId, sign_value, object : BaseObserver<String?>() {
|
||||
override fun onSubscribe(d: Disposable) {
|
||||
addDisposable(d)
|
||||
}
|
||||
|
||||
override fun onNext(s: String) {
|
||||
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
override fun setMutePit(roomId: String, pitNumber: String, isMute: String) {
|
||||
RetrofitClient.getInstance()
|
||||
|
||||
@@ -0,0 +1,68 @@
|
||||
package com.xscm.modulemain.dialog
|
||||
|
||||
import android.content.Context
|
||||
import android.view.Gravity
|
||||
import android.view.ViewGroup
|
||||
import com.chad.library.adapter.base.BaseQuickAdapter
|
||||
import com.chad.library.adapter.base.BaseViewHolder
|
||||
import com.xscm.modulemain.R
|
||||
import com.xscm.modulemain.databinding.DialogMentorShipLayoutBinding
|
||||
import com.xscm.moduleutil.bean.room.RoomPitBean
|
||||
import com.xscm.moduleutil.utils.ImageUtils
|
||||
import com.xscm.moduleutil.widget.dialog.BaseDialog
|
||||
|
||||
class DialogMentorShip(context: Context) : BaseDialog<DialogMentorShipLayoutBinding>(context) {
|
||||
|
||||
init {
|
||||
// 设置对话框从底部弹出
|
||||
window?.setGravity(Gravity.BOTTOM)
|
||||
// 设置对话框的宽度为屏幕宽度
|
||||
window?.setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)
|
||||
// 添加动画效果
|
||||
window?.setWindowAnimations(com.xscm.moduleutil.R.style.DialogAnimationt)
|
||||
}
|
||||
|
||||
|
||||
|
||||
override fun getLayoutId(): Int {
|
||||
return R.layout.dialog_mentor_ship_layout
|
||||
}
|
||||
|
||||
private var adapter: Adapter? = null
|
||||
private var onItemClickListener: OnItemClickListener? = null
|
||||
override fun initView() {
|
||||
adapter = Adapter(R.layout.item_mentor_ship_layout, arrayListOf())
|
||||
mBinding.recycleView.adapter = adapter
|
||||
}
|
||||
|
||||
override fun initData() {
|
||||
adapter?.setOnItemClickListener { adapter, view, position ->
|
||||
onItemClickListener?.onItemClick(adapter.data[position]!!.toString())
|
||||
}
|
||||
mBinding.tvRecharge.setOnClickListener {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
fun show(list: List<String>, mSignPitBean: RoomPitBean?, onItemClickListener: OnItemClickListener?) {
|
||||
super.show()
|
||||
mBinding.tvName.text = mSignPitBean?.nickname
|
||||
ImageUtils.loadHeadCC(mSignPitBean?.avatar, mBinding.ivHead)
|
||||
this.onItemClickListener = onItemClickListener
|
||||
adapter?.setNewData(list)
|
||||
}
|
||||
|
||||
|
||||
class Adapter(idx: Int, data: MutableList<String>) :
|
||||
BaseQuickAdapter<String, BaseViewHolder>(idx, data) {
|
||||
override fun convert(helper: BaseViewHolder, item: String?) {
|
||||
helper.setText(R.id.tv_glod, item)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
interface OnItemClickListener {
|
||||
fun onItemClick(coin: String)
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,44 @@
|
||||
package com.xscm.modulemain.utils
|
||||
|
||||
import kotlinx.coroutines.CoroutineScope
|
||||
import kotlinx.coroutines.Job
|
||||
import kotlinx.coroutines.delay
|
||||
import kotlinx.coroutines.flow.MutableStateFlow
|
||||
import kotlinx.coroutines.flow.StateFlow
|
||||
import kotlinx.coroutines.launch
|
||||
|
||||
class CountdownTimer {
|
||||
private var job: Job? = null
|
||||
private val _timeLeft = MutableStateFlow(0L)
|
||||
val timeLeft: StateFlow<Long> = _timeLeft
|
||||
|
||||
fun startCountdown(endTimestamp: Long, scope: CoroutineScope) {
|
||||
job?.cancel()
|
||||
job = scope.launch {
|
||||
while (true) {
|
||||
val currentTime = System.currentTimeMillis() / 1000
|
||||
val remainingTime = (endTimestamp - currentTime) * 1000 // 转换为毫秒
|
||||
|
||||
if (remainingTime <= 0) {
|
||||
_timeLeft.value = 0
|
||||
break
|
||||
}
|
||||
|
||||
_timeLeft.value = remainingTime
|
||||
delay(1000)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun stop() {
|
||||
job?.cancel()
|
||||
}
|
||||
|
||||
fun formatTime(milliseconds: Long): String {
|
||||
val seconds = (milliseconds / 1000).toInt()
|
||||
val minutes = seconds / 60
|
||||
val remainingSeconds = seconds % 60
|
||||
return String.format("%02d:%02d", minutes, remainingSeconds)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -74,7 +74,7 @@ class RoomMentorShipWheatView : BaseWheatView {
|
||||
hostTv?.text = bean.nickname
|
||||
} else {
|
||||
mTvName.visibility = VISIBLE
|
||||
mCharmView.visibility = INVISIBLE
|
||||
mCharmView.visibility = GONE
|
||||
hostTv?.visibility = GONE
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user