diff --git a/app/src/main/java/com/yizhuan/erban/ui/widget/dialog/AllServiceGiftGoRoomTipsDialog.kt b/app/src/main/java/com/yizhuan/erban/ui/widget/dialog/AllServiceGiftGoRoomTipsDialog.kt new file mode 100644 index 000000000..482c95bc3 --- /dev/null +++ b/app/src/main/java/com/yizhuan/erban/ui/widget/dialog/AllServiceGiftGoRoomTipsDialog.kt @@ -0,0 +1,101 @@ +package com.yizhuan.erban.ui.widget.dialog + +import android.content.Context +import android.os.Bundle +import android.view.Gravity +import android.view.LayoutInflater +import android.view.Window +import android.view.WindowManager +import androidx.databinding.DataBindingUtil +import com.chuhai.utils.ktx.singleClick +import com.yizhuan.erban.R +import com.yizhuan.erban.avroom.activity.AVRoomActivity +import com.yizhuan.erban.databinding.AllServiceGiftGoRoomTipsDialogBinding +import com.yizhuan.erban.public_chat_hall.activity.PublicChatHallHomeActivity +import com.yizhuan.xchat_android_core.initial.InitialModel +import com.yizhuan.xchat_android_library.common.util.SPUtils +import com.yizhuan.xchat_android_library.utils.JavaUtil + +/** + * Created by Max on 2023/10/30 10:29 + * Desc:跳转房间提示 + **/ +class AllServiceGiftGoRoomTipsDialog( + context: Context, + private val roomName: String, + private val roomId: Long +) : + BaseDialog(context, R.style.dialog) { + + private var binding: AllServiceGiftGoRoomTipsDialogBinding? = null + + companion object { + /** + * 是否需要提示前往房间 + */ + fun isNeedTips(): Boolean { + return !SPUtils.getBoolean("all_service_gift_go_room_no_tips", false) + } + + /** + * 忽略提示/不在提示 + */ + private fun ignoreTips() { + SPUtils.putBoolean("all_service_gift_go_room_no_tips", true) + } + } + + private var isCheck: Boolean = false + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + requestWindowFeature(Window.FEATURE_NO_TITLE) + val inflate = + LayoutInflater.from(context) + .inflate(R.layout.all_service_gift_go_room_tips_dialog, null) + setContentView(inflate.rootView) + binding = DataBindingUtil.bind(inflate) + + binding?.tvRoomName?.text = roomName + binding?.ivCheckbox?.setOnClickListener { + updateCheckbox(!isCheck) + } + binding?.tvTips?.setOnClickListener { + updateCheckbox(!isCheck) + } + binding?.tvGo?.singleClick { + if (isCheck) { + ignoreTips() + } + if (roomId == JavaUtil.str2long(InitialModel.get().publicChatHallUid)) { + PublicChatHallHomeActivity.openPublicChatHallPage(context) + } else { + AVRoomActivity.start(context, roomId) + } + dismiss() + } + binding?.tvCancel?.singleClick { + dismiss() + } + updateCheckbox(false) + } + + override fun onStart() { + super.onStart() + this.window?.attributes?.let { + it.width = WindowManager.LayoutParams.MATCH_PARENT + it.height = WindowManager.LayoutParams.WRAP_CONTENT + it.gravity = Gravity.CENTER + window?.attributes = it + } + } + + private fun updateCheckbox(isCheck: Boolean) { + this.isCheck = isCheck + if (isCheck) { + binding?.ivCheckbox?.setImageResource(R.drawable.base_ic_checkbox_selected) + } else { + binding?.ivCheckbox?.setImageResource(R.drawable.base_ic_checkbox_unselected) + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/yizhuan/erban/ui/widget/dialog/AllServiceGiftLevelDialog.kt b/app/src/main/java/com/yizhuan/erban/ui/widget/dialog/AllServiceGiftLevelDialog.kt index 20d531824..327a81e0a 100644 --- a/app/src/main/java/com/yizhuan/erban/ui/widget/dialog/AllServiceGiftLevelDialog.kt +++ b/app/src/main/java/com/yizhuan/erban/ui/widget/dialog/AllServiceGiftLevelDialog.kt @@ -10,12 +10,13 @@ import android.view.ViewConfiguration import android.view.Window import android.view.WindowManager import android.widget.TextView +import androidx.core.view.isVisible import androidx.databinding.DataBindingUtil import com.chuhai.utils.ktx.singleClick import com.chuhai.utils.ktx.toStringRes import com.yizhuan.erban.R import com.yizhuan.erban.avroom.activity.AVRoomActivity -import com.yizhuan.erban.databinding.DialogGiftAllServiceLevelBinding +import com.yizhuan.erban.databinding.DialogGiftAllServiceLevel2Binding import com.yizhuan.erban.public_chat_hall.activity.PublicChatHallHomeActivity import com.yizhuan.xchat_android_core.initial.InitialModel import com.yizhuan.xchat_android_core.noble.AllServiceGiftProtocol @@ -31,7 +32,7 @@ import java.util.concurrent.TimeUnit class AllServiceGiftLevelDialog : BaseDialog { private var data: AllServiceGiftProtocol.DataBean? = null - private var binding: DialogGiftAllServiceLevelBinding? = null + private var binding: DialogGiftAllServiceLevel2Binding? = null private var disposable: Disposable? = null @@ -49,7 +50,7 @@ class AllServiceGiftLevelDialog : BaseDialog { super.onCreate(savedInstanceState) requestWindowFeature(Window.FEATURE_NO_TITLE) val inflate = - LayoutInflater.from(context).inflate(R.layout.dialog_gift_all_service_level, null) + LayoutInflater.from(context).inflate(R.layout.dialog_gift_all_service_level2, null) setContentView(inflate.rootView) setCancelable(true) setCanceledOnTouchOutside(true) @@ -82,16 +83,20 @@ class AllServiceGiftLevelDialog : BaseDialog { private fun init( data: AllServiceGiftProtocol.DataBean, - binding: DialogGiftAllServiceLevelBinding + binding: DialogGiftAllServiceLevel2Binding ) { + binding.ivAvatar.singleClick { + goRoom(data) + } binding.tvRoomGo.singleClick { - if (data.roomUid == JavaUtil.str2long(InitialModel.get().publicChatHallUid)) { - PublicChatHallHomeActivity.openPublicChatHallPage(context) - } else { - AVRoomActivity.start(context, data.roomUid) - } + goRoom(data) } binding.giftBean = data + if ((data.giftNum) <= 1) { + binding.tvCount.text = "" + } else { + binding.tvCount.text = "X${data.giftNum}" + } binding.tvMessage.text = "${data.sendUserNick}${R.string.layout_dialog_in_app_sharing_confirm_01.toStringRes()}${data.recvUserNick} ${data.giftName}" when (data.levelNum.toIntOrNull()) { @@ -116,6 +121,7 @@ class AllServiceGiftLevelDialog : BaseDialog { setupTextMarquee(binding.tvMessage) disposable = Observable.timer(data.notifyStaySecond.toLong(), TimeUnit.SECONDS) .subscribe { dismiss() } + binding.groupRoom.isVisible = data.roomUid != 0L } /** @@ -141,6 +147,20 @@ class AllServiceGiftLevelDialog : BaseDialog { } } + private fun goRoom( + data: AllServiceGiftProtocol.DataBean + ) { + if (AllServiceGiftGoRoomTipsDialog.isNeedTips()) { + AllServiceGiftGoRoomTipsDialog(context, data.roomTitle, data.roomUid).show() + } else { + if (data.roomUid == JavaUtil.str2long(InitialModel.get().publicChatHallUid)) { + PublicChatHallHomeActivity.openPublicChatHallPage(context) + } else { + AVRoomActivity.start(context, data.roomUid) + } + } + } + override fun dismiss() { super.dismiss() if (disposable?.isDisposed != true) { diff --git a/app/src/main/res/drawable/base_ic_checkbox_selected.xml b/app/src/main/res/drawable/base_ic_checkbox_selected.xml new file mode 100644 index 000000000..d5b22767c --- /dev/null +++ b/app/src/main/res/drawable/base_ic_checkbox_selected.xml @@ -0,0 +1,18 @@ + + + + diff --git a/app/src/main/res/drawable/base_ic_checkbox_unselected.xml b/app/src/main/res/drawable/base_ic_checkbox_unselected.xml new file mode 100644 index 000000000..20d2db0af --- /dev/null +++ b/app/src/main/res/drawable/base_ic_checkbox_unselected.xml @@ -0,0 +1,12 @@ + + + diff --git a/app/src/main/res/drawable/base_theme_btn_21.xml b/app/src/main/res/drawable/base_theme_btn_21.xml new file mode 100644 index 000000000..64dfde80e --- /dev/null +++ b/app/src/main/res/drawable/base_theme_btn_21.xml @@ -0,0 +1,14 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/shape_e6e6f0_21.xml b/app/src/main/res/drawable/shape_e6e6f0_21.xml new file mode 100644 index 000000000..f996926dd --- /dev/null +++ b/app/src/main/res/drawable/shape_e6e6f0_21.xml @@ -0,0 +1,7 @@ + + + + + + diff --git a/app/src/main/res/layout/all_service_gift_go_room_tips_dialog.xml b/app/src/main/res/layout/all_service_gift_go_room_tips_dialog.xml new file mode 100644 index 000000000..1b9388e54 --- /dev/null +++ b/app/src/main/res/layout/all_service_gift_go_room_tips_dialog.xml @@ -0,0 +1,116 @@ + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_gift_all_service_level.xml b/app/src/main/res/layout/dialog_gift_all_service_level.xml index 879fcbda0..1ad98f4b7 100644 --- a/app/src/main/res/layout/dialog_gift_all_service_level.xml +++ b/app/src/main/res/layout/dialog_gift_all_service_level.xml @@ -115,6 +115,7 @@ app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toStartOf="@id/tv_count" app:layout_constraintTop_toTopOf="parent" + app:layout_goneMarginEnd="24dp" tools:background="@color/black" /> + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 49be559d8..e29c2d8c6 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -5143,5 +5143,9 @@ 當前無需選擇解鎖禮物 選擇解鎖禮物 去圍觀 - + 前往圍觀 + 是否離開當前房間前往 + 下次不再出現此提示 + 留在這 + 立即前往 \ No newline at end of file